// size = 1 << 16
// Decreases a binary counter until it is 0
// Church Nats
@c0 = (* (a a))
@c1 = ((a R) (a R))
@c2 = ([(b a) (a R)] (b R))
@c3 = ([[(c b) (b a)] (a R)] (c R))
@c4 = ([[[(d c) (c b)] (b a)] (a R)] (d R))
@c5 = ([[[[(e d) (d c)] (c b)] (b a)] (a R)] (e R))
@c6 = ([[[[[(f e) (e d)] (d c)] (c b)] (b a)] (a R)] (f R))
@c7 = ([[[[[[(g f) (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (g R))
@c8 = ([[[[[[[(h g) (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (h R))
@c9 = ([[[[[[[[(i h) (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (i R))
@c10 = ([[[[[[[[[(j i) (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (j R))
@c11 = ([[[[[[[[[[(k j) (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (k R))
@c12 = ([[[[[[[[[[[(l k) (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (l R))
@c13 = ([[[[[[[[[[[[(m l) (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (m R))
@c14 = ([[[[[[[[[[[[[(n m) (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (n R))
@c15 = ([[[[[[[[[[[[[[(o n) (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (o R))
@c16 = ([[[[[[[[[[[[[[[(p o) (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (p R))
@c17 = ([[[[[[[[[[[[[[[[(q p) (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (q R))
@c18 = ([[[[[[[[[[[[[[[[[(r q) (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (r R))
@c19 = ([[[[[[[[[[[[[[[[[[(s r) (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (s R))
@c20 = ([[[[[[[[[[[[[[[[[[[(t s) (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (t R))
@c21 = ([[[[[[[[[[[[[[[[[[[[(u t) (t s)] (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (u R))
@c22 = ([[[[[[[[[[[[[[[[[[[[[(v u) (u t)] (t s)] (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (v R))
@c23 = ([[[[[[[[[[[[[[[[[[[[[[(w v) (v u)] (u t)] (t s)] (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (w R))
@c24 = ([[[[[[[[[[[[[[[[[[[[[[[(x w) (w v)] (v u)] (u t)] (t s)] (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (x R))
@c25 = ([[[[[[[[[[[[[[[[[[[[[[[[(y x) (x w)] (w v)] (v u)] (u t)] (t s)] (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (y R))
@c26 = ([[[[[[[[[[[[[[[[[[[[[[[[[(z y) (y x)] (x w)] (w v)] (v u)] (u t)] (t s)] (s r)] (r q)] (q p)] (p o)] (o n)] (n m)] (m l)] (l k)] (k j)] (j i)] (i h)] (h g)] (g f)] (f e)] (e d)] (d c)] (c b)] (b a)] (a R)] (z R))
@O = (xs ((xs r) (* (* r))))
@I = (xs (* ((xs r) (* r))))
@E = (* (* (e e)))
@decO = (p idecp) & @I ~ (decp idecp) & @dec ~ (p decp)
@decI = (p lowp) & @low ~ (p lowp)
@dec = ((@decO (@decI (@E R))) R)
@lowO = (p oop) & @O ~ (p op) & @O ~ (op oop)
@lowI = (p oip) & @I ~ (p ip) & @O ~ (ip oip)
@low = ((@lowO (@lowI (@E R))) R)
@runO = (p R) & @run ~ (decop R) & @dec ~ (op decop) & @O ~ (p op)
@runI = (p R) & @run ~ (decip R) & @dec ~ (ip decip) & @I ~ (p ip)
@run = ((@runO (@runI (@E R))) R)
@main
= R
& @c12 ~ (@I (@E nie))
& @run ~ (nie R)