void paste(record r, index x, text p, integer a) { p = insert(p, -1, a); x.delete(a); if (~x) { x.vcall(paste, -1, r, x, p); } else { r[p] = 0; } x[a] = 0; } integer main(void) { record r; list l; index x; l.bill(0, "ABCD", "CABD", "ACDB", "DACB", "BCDA", "ACBD", "ADCB", "CDAB", "DABC", "BCAD", "CADB", "CDBA", "CBAD", "ABDC", "ADBC", "BDCA", "DCBA", "BACD", "BADC", "BDAC", "CBDA", "DBCA", "DCAB"); x['A'] = x['B'] = x['C'] = x['D'] = 0; x.vcall(paste, -1, r, x, ""); l.ucall(r_delete, 1, r); o_(r.low, "\n"); return 0; }