#include <iostream>
using namespace std;
#define PRINT(x) printf("%2d ", (x)+1)
main() {
int i, j, k, r = 0, n = 7;
// first card
printf ("Card %2d: ", ++r);
for (i = 0; i <= n; i++) {
PRINT (i);
}
printf ("\n");
// n following cards
for (j = 0; j < n; j++) {
printf ("Card %2d: ", ++r);
PRINT (0);
for (k = 0; k < n; k++) {
PRINT (n+1 + n*j + k);
}
printf ("\n");
}
// n*n following cards
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf ("Card %2d: ", ++r);
PRINT (i+1);
for (k = 0; k < n; k++) {
PRINT (n+1 + n*k + (i*k+j)%n); // Good for n = prime number
}
printf ("\n");
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCiNkZWZpbmUgUFJJTlQoeCkgcHJpbnRmKCIlMmQgICIsICh4KSsxKQoKbWFpbigpIHsKICAgIGludCBpLCBqLCBrLCByID0gMCwgbiA9IDc7CgogICAgLy8gZmlyc3QgY2FyZAogICAgcHJpbnRmICgiQ2FyZCAlMmQ6ICAiLCArK3IpOwogICAgZm9yIChpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICBQUklOVCAoaSk7CiAgICB9CiAgICBwcmludGYgKCJcbiIpOwoKICAgIC8vIG4gZm9sbG93aW5nIGNhcmRzCiAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgcHJpbnRmICgiQ2FyZCAlMmQ6ICAiLCArK3IpOwogICAgICAgIFBSSU5UICgwKTsKICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7CiAgICAgICAgICAgIFBSSU5UIChuKzEgKyBuKmogKyBrKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmICgiXG4iKTsKICAgIH0KCiAgICAvLyBuKm4gZm9sbG93aW5nIGNhcmRzCiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICBwcmludGYgKCJDYXJkICUyZDogICIsICsrcik7CiAgICAgICAgICAgIFBSSU5UIChpKzEpOwogICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbjsgaysrKSB7CiAgICAgICAgICAgICAgICBQUklOVCAobisxICsgbiprICsgKGkqaytqKSVuKTsgLy8gR29vZCBmb3IgbiA9IHByaW1lIG51bWJlcgogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaW50ZiAoIlxuIik7CiAgICAgICAgfQogICAgfQp9