#include #include #include #include #include #define DBG printf int sl[32][32], nsl[32]; int x1[32], y1[32], x2[32], y2[32]; int ok[32]; int res[32]; int main (void) { int prob = 0; FILE* fin = fopen ("slides.in", "r"); for ( ; ; ) { int n; fscanf (fin, "%d", &n); if ( n == 0 ) break; for ( int i = 0; i < n; ++i ) { fscanf (fin, "%d%d%d%d", x1+i, x2+i, y1+i, y2+i); ok[i] = nsl[i] = 0; res[i] = -1; } for ( int i = 0; i < n; ++i ) { int x, y; fscanf (fin, "%d%d", &x, &y); for ( int j = 0; j < n; ++j ) { if ( x1[j] < x && x2[j] > x && y1[j] < y && y2[j] > y ) sl[j][nsl[j]++] = i; } } int found = 1; while ( found ) { found = 0; for ( int i = 0; i < n; ++i ) if ( res[i] < 0 ) { int cnt = 0, wh = -1; for ( int j = 0; j < nsl[i]; ++j ) if ( !ok[ sl[i][j] ] ) { ++cnt; wh = sl[i][j]; } if ( cnt == 1 ) { found = 1; ok [wh] = 1; res[i] = wh; } } for ( int i = 0; i < n; ++i ) if ( !ok[i] ) { int cnt = 0, wh = -1; for ( int j = 0; j < n; ++j ) if ( res[j] < 0 ) for ( int k = 0; k < nsl[j]; ++k ) if ( sl[j][k] == i ) { ++cnt; wh = j; break; } if ( cnt == 1 ) { found = 1; ok[i] = 1; res[wh] = i; } } } int cnt = 0; printf ("Heap %d\n", ++prob); for ( int i = 0; i < n; ++i ) if ( res[i] >= 0 ) printf ("%s(%c,%d)", cnt++ ? " " : "", 'A'+i, res[i]+1); printf (cnt ? "\n\n" : "none\n\n"); } return 0; }