#include struct queue{ int x,y,st; }q[128*128*32]; int m[128][128][32]; int get[128][128]; int pos[128][128]; int main() { int a, b; int x, y; int tx, ty; int qs, qe; while(scanf("%d%d", &a, &b), a||b) { qs=qe=0; for(int i=0; i",qe,qs); /*if (mx==tx && my==ty) { printf("Escape possible in %d steps.\n", m[my][mx][ns]); break; }*/ if (get[q[qs].y][q[qs].x])=32) { printf("Escape possible in %d steps.\n", m[my][mx][ns]); break; } if (qs>=qe) { printf("The poor student is trapped!\n"); break; } if (mx>0) { if ((pos[my][mx-1]&mst) && m[my][mx-1][ns]>m[my][mx][mst]+1) { m[my][mx-1][ns]=m[my][mx][mst]+1; q[qe].x=mx-1; q[qe].y=my; q[qe].st=ns; qe++; } } if (my>0) { if ((pos[my-1][mx]&mst) && m[my-1][mx][ns]>m[my][mx][mst]+1) { m[my-1][mx][ns]=m[my][mx][mst]+1; q[qe].x=mx; q[qe].y=my-1; q[qe].st=ns; qe++; } } if (mxm[my][mx][mst]+1) { m[my][mx+1][ns]=m[my][mx][mst]+1; q[qe].x=mx+1; q[qe].y=my; q[qe].st=ns; qe++; } } if (mym[my][mx][mst]+1) { m[my+1][mx][ns]=m[my][mx][mst]+1; q[qe].x=mx; q[qe].y=my+1; q[qe].st=ns; qe++; } } qs++; } } return 0; }