rcm/rcm.c
#include T
#include Y

H W[] = { 16, 17, 18,  0, 8, 7, 9,  6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }
,u[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15,  17, 19, 23, 27, 31, 35, 43, 51,
59,  67,  83,  99, 115, 131, 163, 195,  227, 258 } ,P[] = { A A 1, 1, 1, 1, 2,
2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 } ,Q[] = { 1, 2, 3, 4, 5, 7, 9,
13, 17, 25,  33, 49, 65, 97,  129, 193, 257, 385,  513, 769, 1025, 1537, 2049,
3073,  4097,  6145,  8193,  12289, 16385, 24577 } ,L[] = { A 1, 1, 2, 2, 3, 3,
4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }, y, C, t,
Z[320],  b[17], G[17]; H long  j; H char S[K]; n { n *o, *O; H l; } F, *V, *h,
*I, **e;

H U H l, H O)
{
  H w = 0, o, f, q; J !O) { ; {
    U 24, 1); o = U 8, 1); U 24, 1); U 24, 1); {
      J o & 4) { ; X q = U 16, 1); q--; U 8, 1)); } ; {
        X; o &  8 && U 8, 1); ) { ; ;
    }
  }
  X; o & 16 && U 8, 1); );
  o & 2 && U 16, 1);
}

X o = 0; !o; ) { ;
{
  o = U 1, 1); q = U 2, 1); J
  q || U 8, 7)) { ; { ; { ; } ; ; ;
    q & 1 && U 7, 8);
    q & 2 && U 3, 9); U 5, 6);
    I = V; U 2, 4); I = h; U 9, 4); } ; }
  } ; ; { ; } ; { ; } ; { ; } ; { ; }
}

X; (C M) != (t M); N (C++[S])); } ; }

s 6)
{
  ; { ; { ; } X; (O = U 6, (I = V, 3) ))  != 256; )
  J O > 256 || (U O, 2),  0)) { ; {
    O -= 257; l = u[O] + U P[O],  1);
    I =  h; O = U 5, 3); O = Q[O] + U L[O], 1);
      O = O <= t ?
    t - O : K - O + t; X; l--; O M) U S[O++], 2) ; } ; }
  }
  ;} s 3) {
    ; { X; I->o; I = U 1, 1) ? I->O : I->o); w = I->l; } ;
  } s 5) { ; { X O =  17; O--; O[b] =
  0); X O++; O < l;
    O++[Z][b]++);
      X *b = *G = O = 0 ; O < 16; O++) { ; {
  G[O+1] = (O[G] + b[O]) << 1; ; }
}

X I = 0, O = 0; O < l; O++) J Z[O]) { ;
{
  X e = (q = O[Z][G], Z[O][G]++,
  o = Z[O], &I); o-- && (*e || ((*(*e = R) = F), 1));
  e = ((q >> o) & 1) ? &(*e)->O : &(*e)->o);
  *(*e = R)
  = F; (*e)->l = O; } ; } } ; } s 2) { ; {
  t++[S] = l; (t M) == (C M)
  && N (C++[S]); } ; } s 8) { ; {
    X O = 288; O--; Z[O] = O < 144 ? 8
    : O < 256 ? 9 : O < 280 ? 7 : 8); V = (U 288, 5),
    I); { ; { X O = 32; O--;
    Z[O] = 5); 
  }
}

h = (U 32, 5), I); } ; } s 1 && l)
{
  ; { { ; } ; { ; } ; { ; } ; { ; }
  X; y < l; y += 8)
  j |= 0l + D << y; w = j
    & (1 << l) - 1;
    j >>= l; y -= l; } ; } s 7) { ; { y % 8 && U y % 8, 1);
      X O = U 16, 1), U 16, 1); O--; U U 8, 1), 2));
    } ;
  }
  s 9) { ; {
    H p = U 5, 1) + 257, z = U 5, 1) + 1, v = U 4,
      1) + 4; { X O = 0; O < v; O++[W][Z] = U 3, 1));
    X; 19 > O; W[O++][Z] = 0); { ;
  }
}

V = (U 19, 5), I);
{
  X l = O = 0; O < (p + z); ) {
    I = V; o = U 3, 3); f = o == 16
      ? (o = l), 3 + U 2, 1) : o == 17 ?
        (o = 0), 3 + U 3, 1) : o == 18 ? (o = 0),
          11 + U 7, 1) : ((l = o), 1); X q = f; q--;
            O++[Z] = o); ; ; ; ; ; { ; }
}

I = V;
{
  U 9, 4); }
  V = (U p, 5), I);
  X O = z; O--;
  Z[O] = Z[O+p]);
  h = (U z, 5),
  I); } ; ; ; } ; ; ; } s
  4) { ; ; ; { n *
  i = I; i && (
  I = i->o, U 7, 4),
  I = i->O,
  free (i), U 1, 4));
  } ; }
  return w;
}

main ()
{
  return B (3, 0);
}