#include int maze[7][7]; int extra; int sx,sy,ex,ey; int fronta[100]; void shiftcolup(int col) { int away = maze[0][col], i; for(i = 0; i < 6; i++) { maze[i][col] = maze[i+1][col]; } maze[6][col] = extra; extra = away; } void shiftcoldown(int col) { int away = maze[6][col], i; for(i = 1; i < 7; i++) { maze[7-i][col] = maze[7-i-1][col]; } maze[0][col] = extra; extra = away; } void shiftrowup(int row) { int away = maze[row][0], i; for(i = 0; i < 6; i++) { maze[row][i] = maze[row][i+1]; } maze[row][6] = extra; extra = away; } void shiftrowdown(int row) { int away = maze[row][6], i; for(i = 1; i < 7; i++) { maze[row][7-i] = maze[row][7-i-1]; } maze[row][0] = extra; extra = away; } int go(void) { int x, y; int m[7][7],i,j, head, tail; for(i = 0; i < 7; i++) for(j = 0; j < 7; j++) m[i][j] = 0; fronta[0] = sx; fronta[1] = sy; head = 0; tail = 2; m[sx][sy] = 1; while(head != tail && fronta[0] != ex && fronta[1] != ey) { x = fronta[head]; y = fronta[head+1]; if (x > 0 && maze[x][y] & 1 && maze[x-1][y] & 4) { if (m[x-1][y] == 0) { fronta[tail++] = x-1; fronta[tail++] = y; m[x-1][y] = 1; } } if (y < 6 && maze[x][y] & 2 && maze[x][y+1] & 8) { if (m[x][y+1] == 0) { fronta[tail++] = x; fronta[tail++] = y+1; m[x][y+1] = 1; } } if (x < 6 && maze[x][y] & 4 && maze[x+1][y] & 1) { if (m[x+1][y] == 0) { fronta[tail++] = x+1; fronta[tail++] = y; m[x+1][y] = 1; } } if (y > 0 && maze[x][y] & 8 && maze[x][y-1] & 2) { if (m[x][y-1] == 0) { fronta[tail++] = x; fronta[tail++] = y-1; m[x][y-1] = 1; } } head += 2; } if (head == tail) return 0; return 1; } int main(void) { int i,j, err; for(;;) { scanf("%d%d%d%d",&sx,&sy,&ex,&ey); if (sx == 0 && sy == 0 && ex == 0 && ey == 0) break; sx--; sy--; ex--; ey--; for(i = 0; i < 7; i++) for(j = 0; j < 7; j++) maze[i][j] = 0; for(i = 0; i < 7; i++) { scanf(" "); for(j = 0; j < 7; j++) { getchar(); if (getchar() == '|') maze[i][j] += 1; getchar(); scanf(" "); } scanf(" "); for(j = 0; j < 7; j++) { if (getchar() == '-') maze[i][j] += 8; getchar(); if (getchar() == '-') maze[i][j] += 2; scanf(" "); } scanf(" "); for(j = 0; j < 7; j++) { getchar(); if (getchar() == '|') maze[i][j] += 4 ; getchar(); scanf(" "); } } extra = 0; scanf(" "); getchar(); if (getchar() == '|') extra += 1 ; getchar(); scanf(" "); if (getchar() == '-') extra += 8; getchar(); if (getchar() == '-') extra += 2; scanf(" "); getchar(); if (getchar() == '|') extra += 4 ; getchar(); err = 0; for(j = 0; j < 4; j++) { if (err) break; for(i = 1; i < 7; i+=2) { shiftcolup(i); if (go()) { err = 1; break; } shiftcoldown(i); shiftcoldown(i); if (go()) { err = 1; break; } shiftcolup(i); } if (err == 0) { for(i = 1; i < 7; i+=2) { shiftrowup(i); if (go()) { err = 1; break; } shiftrowdown(i); shiftrowdown(i); if (go()) { err = 1; break; } shiftrowup(i); } } extra = extra & 1 ? (extra >> 1) | 8 : extra >> 1; } if (err) { printf("You can win in one move.\n"); } else { printf("Bad luck!\n"); } } return 0; }