#include <stdio.h>
#include <stdlib.h>
#include <time.h>


/* Defines */

#ifndef NO_STTY
#define S1 system("stty cbreak -echo")||
#define S2 system("stty echo")||
#else
#define S1
#define S2
#endif

#define A(i) (((q*)R(8))[i])
#define B p(b)
#define C p(&a)
#define H(i) sscanf(A(i),"%ld",&R(i+11))&0 ||
#define P q*
#define M(a,b) main((i)(a),(P)(b))

#define p(x) ((i*)(x))
#define D T(B-C,C-B)
#define T(x,y) ((a&1)*((i)(x))+(~a&1)*((i)(y)))
#define R(x) (*(B+x))
#define q char*
#define Q(x) ((q)(x))
#define W(x,y) ((B[x]=(i)(y))&0)||
#define BS (w*l*h)
#define do(x,y) (a-x||y)&&
#define f(x) M(x,b)
#define if(p,q,r,s) ((p)&&!(q)||(s))&&(r)||
#define i long
#define I (int)

#define while(x,y,z) do(x, y && !(z) && f(a))
#define for(s,i,x,y,z,Z) W(i,x)f(s)||Z) && while(s,R(i)-y,z||W(i,R(i)+1)0)(s
#define return return do
#define w R(12)
#define l R(13)
#define h R(14)
#define X(i) (R(i)%w)
#define Y(i) ((R(i)%(w*l))/w)

#define Z(i) (R(i)/(w*l))
#define pr !printf
#define switch(x) (W(32+R(15),R(32+x+R(15))) W(32+x+R(15),0) (B[15]+=x)|1)
#define case(k,x,y) R(a)==k && x && switch(y) && f(13)||
#define TL(i) R(32+R(i))


/* Main program */

int 
main(int a, P b)
{
	return (1 >> 1 ^ 1, M(6 + !!M(5, C), C))
	do
		(
		 13,
		 pr("\x1b[;H") ||

		 for (14, 4, 0, BS, !X(4) && pr(
						"%*s",
						I(l - Y(4)),
						""
						)
		      ||

		      if (TL(4), pr(
				    "%*ld", I
				    R(31),
				    TL(4)), 0,
			  pr("%*.*s", I
			     R(31),
			     I R(31), "#####")
			  )
		  if (X(4) == w - 1, pr("\n"), 0, pr("%*s", I(l + 1), "")) (
				      (R(4) + 1) % (w * l) == 0 && l > 1) &&
		      pr("\n"), 0))
			do
				(
				 1 & ~1,
				 pr("Syntax: %s <x> <y> [<z>]\n", b[0]) || f(15)
				) ((a & ~1)
				   - 6 || D >> 12
				   && (*(p(T(C, b)) + 8) = *p(Q(b) + (Q(&b) - Q(C)))
				       )
				   && (*(p(T(C, b)) + 9) = *p(b)) && M(
								 8, T(C, b))
				   ||

				   f(a)) &&
				do
					(
					 8,
					 if (R(9) & 1, H(1) H(
							      2) 0, W(14,
							      l) W(13, 1) 0,
					     H(1
					       )
					     H(2)
					     H(3)
					     0) (srand(time(0)), 0
						 ) || for (9, 4, 0, BS, f(16)
							   || W(R(4) + 32, R(0)) ! R(0) && W(15, R(4)) 0,

							   W(
							     31,
					       snprintf(A(0), 1, "%ld", BS))
							 S1 pr("\x1b[2J") ||
							   f(13)
							   ||

							   f(18) ||
							   f(15)
							   ))
						do
							(
							 16, W(0, rand() % BS
							       ) W(1, 0)
							 for (17, 5, 0, R(4), !(
									 TL(
							    5) - R(0)) && !(
								     W(1, 1)
							      W(5, R(4) - 1)
							  0), R(1) && f(16))
							)
								do
									(
									 18, W(0, 0
									       ) for (19, 4, 0, BS, TL(4) - (R(4) + 1)
										      % BS && (
											       W(0, 1)
											       W(4, BS - 1
												 ) 0) || 0, !R(0) &&

									 pr(
									    "You win!\n"
									    )
									  ||
										      R(0) && (
											       W(a, getchar())
											       case ('i',
												     0 < Z(15),
												     -w * l)
											       case ('j',
												     0 < X(15),
									 -1)
											       case ('k',
												     Z(15) < h - 1,
												     w * l)
											       case ('l',
												     X(15) < w - 1,
									  1)
											       case ('n',
												     Y(15) < l - 1,
									  w)
											       case ('o',
												     0 < Y(15), -w
									   )
											       R(a) == 'q' && !

									 pr(
									    "You lose :-)\n"
									    )
											       && f(15) || f(a))
									   )
									)
										do
											(
											 15, S2
											 (exit(0), a)
											) (a - 5 || C < p(b));
										}
