#include #include typedef int _; _ V, i, o, l, e, t = 1, E[4], I[22] = { 4352, 95, 4554, 1, 2902, 446, 2, 29839, 1841, 11171, 8541, 511, 785, 9, 23, 63, 145, 96, 128, 6, 61466, 135167 }, B = 240, H, h, p, q, x, y; typedef struct { _ x, y, z; } b; b *C = NULL, c; FILE *f; void s() { c = C[x], C[x] = C[y], C[y] = c; } void m(_ p, _ q) { _ d = (p + q) / 2; if( d - p ) { m(p, d); m(d, q); for(i = p, o = d, y = H + p; y < H + q; y++) x = i >= d || (o < q && C[i].y * 1e6 + C[i].x > C[o].y * 1e6 + C[o].x) ? o++ : i++, s(); for(y = p, x = H + p; y < q; x++, y++) s(); } } void A() { for(i = l = 0; i < 22 && (o = l + I[i++], l = o + I[i], e < o || e > l); i++); x += 2 - i / 22; } void a() { if( H + 2 > t ) C = (b*)realloc(C, (t *= 2) * 2 * sizeof(b)); C[H].x = x; C[H].y = y; C[H++].z = e; p = p > y ? y : p; q = q < y ? y : q; A(); } void P(_ p) { E[o = 0] = e = p; if( p >> 7 ) { for(; p > 63 >> o; p >>= 6) E[o++] = (p & 63) | 128; E[o] = (B * 8 >> o & B) | p; } for(; o > -1;) fputc(E[o--], f); } void Q(_ O) { O ? fprintf(f, "\33[%d%c", abs(O), V + (O > 0)) : 0; V ^= 2; } char d[2] = "r"; _ r(char *c) { return !(f = fopen(c, d)) ? perror(c), 1 : 0; } _ main(_ O, char **Z) { f = stdin; if( --O && (**++Z - 45 || 1[*Z]) && r(*Z) ) goto X; *d |= 5; for(h = x = y = l = p = q = H = 0; (e = fgetc(f)) > 0; h = h < 0 ? e - 91 ? e < 48 || e > 59 ? l *= (e & 2) - 1, e > 64 && e < 67 ? y += l, 0 : e < 69 && (x += l) < 0 ? x = 0 : 0 : ~(l = l * 10 + e - 48) : h : h ? (e = l = l << 6 | (e & 63), !--h) ? a(), h : h : (e & 224) == 192 ? l = e & 31, 1 : (e & B) == 224 ? l = e & 15, 2 : (e & 248) == B ? l = e & 7, 3 : e - 27 ? e == 10 ? y++, x = 0 : e - 32 ? e == 9 ? x = (x + 8) & ~7 : e > 32 ? a(), h : h : x++, h : ~(l = 0)) V += (V + e) << 10, V ^= V >> 6; fclose(f); f = stdout; if( C ) { if( O < 1 ) { m(0, C[H].x = H); for(h = x = 0, y = p; h < H; A()) { for(; y < C[h].y; y++, x = 0) P(10); for(; x < C[h].x; x++) P(32); for(; C[++h].y == y && C[h].x == x;); P(C[h - 1].z); } if( x ) P(10); } else { srand(V); for(x = H; --x; s()) y = rand() % -~x; if( --O ? r(*++Z) : O++ ) goto X; for(t = h = 0, y = q + 1; h < H && t < O; fclose(f)) { if( t && r(*++Z) ) goto X; if( !t ) for(h = q - p + 2; --h;) P(10); for(V = 65; h < H * -~t / O; y = C[h++].y) Q(C[h].y - y), Q(x - C[h].x), P(C[h].z), x = C[h].x, A(); Q(q - y); P(10); y = q + 1; x = !++t; } } } O = 0; X: return O; }