typedef char long[4];

char *atol(l, s)
char *l, *s;
{
 static char *a, *b;
 static long c, d;
 a = l; b = s;
 inline(221, 229, 42, &a, 237, 91, &a, 19, 1, 3, 0, 54, 0);
 inline(237, 176, 42, &b, 221, 42, &a, 6, 10, 14, 4, 126, 167);
 inline(40, 98, 229, 197, 221, 229, 33, c, 17, d, 54, 10, 6);
 inline(8, 197, 229, 221, 203, 0, 14, 48, 14, 213, 65, 175);
 inline(26, 142, 18, 19, 35, 16, 249, 209, 225, 229, 175, 65);
 inline(203, 22, 35, 16, 251, 225, 193, 16, 224, 221, 35, 35);
 inline(19, 13, 32, 215, 221, 225, 193, 225, 229, 197, 126);
 inline(214, 48, 17, d, 33, c, 119, 65, 175, 26, 142, 18, 19);
 inline(35, 16, 249, 33, d, 221, 229, 209, 65, 126, 18, 54, 0);
 inline(35, 19, 16, 248, 193, 225, 35, 16, 154, 221, 225);
 return l;
}

char *ltoa(s, l)
char *s, *l;
{
 static char *a, *b;
 int i;
 a = s; b = l;
 inline(221, 229, 42, &a, 237, 91, &a, 19, 1, 10, 0, 54, 0);
 inline(237, 176, 221, 42, &b, 17, 3, 0, 221, 25, 42, &a, 17);
 inline(9, 0, 25, 6, 4, 14, 10, 30, 8, 197, 229, 221, 203, 0);
 inline(6, 65, 126, 143, 198, 246, 56, 2, 214, 246, 119, 43);
 inline(16, 244, 225, 29, 32, 234, 193, 221, 43, 16, 226, 65);
 inline(126, 198, 48, 119, 43, 16, 249, 221, 225);
 for (i = 0; i < 9 && *a == '0'; i++) a++;
 move(s, a, 11 - i);
 return s;
}

char *itol(l, n)
int *l;
{
 *l++ = n;
 *l = 0;
 return l;
}

ltoi(l)
int *l;
{
 return *l;
}

lcmp(a, b)
char *a, *b;
{
 int i;
 i = 4;
 while (i--) if (a[i] != b[i]) return a[i] - b[i];
 return 0;
}

char *ladd(a, b, c)
char *a, *b, *c;
{
 static char *d, *e;
 d = a; e = c;
 move(a, b, 4);
 inline(237, 91, &d, 42, &e, 6, 4, 175, 26, 142, 18, 19, 35);
 inline(16, 249);
 return a;
}

char *lsub(a, b, c)
char *a, *b, *c;
{
 static char *d, *e;
 d = a; e = c;
 move(a, b, 4);
 inline(237, 91, &d, 42, &e, 6, 4, 175, 26, 158, 18, 19, 35);
 inline(16, 249);
 return a;
}

char *lmul(a, b, c)
char *a, *b, *c;
{
 static char *d;
 static long e, f;
 d = a;
 move(e, b, 4);
 move(f, c, 4);
 inline(221, 229, 42, &d, 237, 91, &d, 19, 1, 3, 0, 54, 0);
 inline(237, 176, 221, 33, e, 33, f, 237, 91, &d, 14, 4, 6, 8);
 inline(197, 229, 221, 203, 0, 14, 48, 14, 213, 65, 175, 26);
 inline(142, 18, 19, 35, 16, 249, 209, 225, 229, 175, 65, 203);
 inline(22, 35, 16, 251, 225, 193, 16, 224, 221, 35, 35, 19);
 inline(13, 32, 215, 221, 225);
 return a;
}

char *ldiv(a, b, c)
char *a, *b, *c;
{
 static char *d;
 static long e, f;
 d = a;
 move(a, b, 4);
 move(e, c, 4);
 inline(221, 229, 221, 42, &d, 17, 3, 0, 221, 25, 33, e, 14);
 inline(4, 175, 17, f, 65, 18, 19, 16, 252, 95, 28, 6, 8, 197);
 inline(213, 229, 221, 203, 0, 22, 33, f, 67, 203, 22, 35, 16);
 inline(251, 225, 229, 123, 61, 129, 79, 17, f, 65, 26, 158);
 inline(19, 35, 16, 250, 56, 13, 225, 229, 17, f, 65, 26, 158);
 inline(18, 19, 35, 16, 249, 63, 225, 209, 193, 16, 203, 221);
 inline(203, 0, 22, 221, 43, 13, 32, 191, 221, 225);
 return a;
}