#include <iostream>
#include <algorithm>
#include <memory.h>
using namespace std;
const int n = 5000;
const int m = 5;
const int N = n * (n - 1) / 2;
constexpr int SelectDivisor(void)
{
int d = 0, i = 0, r[n + 100] = {0};
for (d = n + 1; d < end(r) - r; d++) {
for (i = 1; i < end(r) - r; i++) r[i] = 0;
for (i = 1; i <= n; i++) if (r[(long long)i * i * i % d]++) break;
if (i > n) break;
}
return d;
};
const int D = SelectDivisor();
int s[n];
int P[D][n], Q[D][n];
int C[D];
int T[n];
int main(void)
{
int a, b, i, j, q, r;
memset(C, 0, sizeof(C));
for (s[i = 0] = 0, b = 1; b <= n - 1; b++) {
for (a = b + 1; a <= n; a++, i++) {
long long d = (long long)a * a * a - (long long)b * b * b;
q = d / D;
r = d % D;
P[r][C[r]] = i;
Q[r][C[r]] = q;
C[r]++;
}
s[b] = i;
}
for (r = 0; r < D; r++) {
memcpy(T, Q[r], sizeof(*T) * C[r]);
sort(T, T + C[r]);
for (i = 0; i < C[r]; i++) {
if (T[i] != T[i + m - 1]) continue;
cout << (long long)T[i] * D + r << ": ";
bool first = true;
for (j = 0; j < C[r]; j++) {
if (Q[r][j] != T[i]) continue;
int x = P[r][j];
b = upper_bound(s + 1, s + n, x) - s;
a = x - s[b - 1] + b + 1;
if (first) first = false; else cout << ", ";
cout << "(" << a << ", " << b << ")";
}
cout << endl;
for (j = i + m; T[j] == T[i]; j++);
i = j - 1;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bWVtb3J5Lmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IG4gPSA1MDAwOwpjb25zdCBpbnQgbSA9IDU7CmNvbnN0IGludCBOID0gbiAqIChuIC0gMSkgLyAyOwoKY29uc3RleHByIGludCBTZWxlY3REaXZpc29yKHZvaWQpCnsKICAgIGludCBkID0gMCwgaSA9IDAsIHJbbiArIDEwMF0gPSB7MH07CgogICAgZm9yIChkID0gbiArIDE7IGQgPCBlbmQocikgLSByOyBkKyspIHsKICAgICAgICBmb3IgKGkgPSAxOyBpIDwgZW5kKHIpIC0gcjsgaSsrKSByW2ldID0gMDsKICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IG47IGkrKykgaWYgKHJbKGxvbmcgbG9uZylpICogaSAqIGkgJSBkXSsrKSBicmVhazsKICAgICAgICBpZiAoaSA+IG4pIGJyZWFrOwogICAgfQogICAgcmV0dXJuIGQ7Cn07Cgpjb25zdCBpbnQgRCA9IFNlbGVjdERpdmlzb3IoKTsKCmludCBzW25dOwppbnQgUFtEXVtuXSwgUVtEXVtuXTsKaW50IENbRF07CmludCBUW25dOwoKaW50IG1haW4odm9pZCkKewogICAgaW50IGEsIGIsIGksIGosIHEsIHI7CgogICAgbWVtc2V0KEMsIDAsIHNpemVvZihDKSk7CiAgICBmb3IgKHNbaSA9IDBdID0gMCwgYiA9IDE7IGIgPD0gbiAtIDE7IGIrKykgewogICAgICAgIGZvciAoYSA9IGIgKyAxOyBhIDw9IG47IGErKywgaSsrKSB7CiAgICAgICAgICAgIGxvbmcgbG9uZyBkID0gKGxvbmcgbG9uZylhICogYSAqIGEgLSAobG9uZyBsb25nKWIgKiBiICogYjsKICAgICAgICAgICAgcSA9IGQgLyBEOwogICAgICAgICAgICByID0gZCAlIEQ7CiAgICAgICAgICAgIFBbcl1bQ1tyXV0gPSBpOwogICAgICAgICAgICBRW3JdW0Nbcl1dID0gcTsKICAgICAgICAgICAgQ1tyXSsrOwogICAgICAgIH0KICAgICAgICBzW2JdID0gaTsKICAgIH0KCiAgICBmb3IgKHIgPSAwOyByIDwgRDsgcisrKSB7CiAgICAgICAgbWVtY3B5KFQsIFFbcl0sIHNpemVvZigqVCkgKiBDW3JdKTsKICAgICAgICBzb3J0KFQsIFQgKyBDW3JdKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQ1tyXTsgaSsrKSB7CiAgICAgICAgICAgIGlmIChUW2ldICE9IFRbaSArIG0gLSAxXSkgY29udGludWU7CgogICAgICAgICAgICBjb3V0IDw8IChsb25nIGxvbmcpVFtpXSAqIEQgKyByIDw8ICI6ICI7CiAgICAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgQ1tyXTsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoUVtyXVtqXSAhPSBUW2ldKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGludCB4ID0gUFtyXVtqXTsKICAgICAgICAgICAgICAgIGIgPSB1cHBlcl9ib3VuZChzICsgMSwgcyArIG4sIHgpIC0gczsKICAgICAgICAgICAgICAgIGEgPSB4IC0gc1tiIC0gMV0gKyBiICsgMTsKICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgZmlyc3QgPSBmYWxzZTsgZWxzZSBjb3V0IDw8ICIsICI7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICIoIiA8PCBhIDw8ICIsICIgPDwgYiA8PCAiKSI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBlbmRsOwogICAgICAgICAgICBmb3IgKGogPSBpICsgbTsgVFtqXSA9PSBUW2ldOyBqKyspOwogICAgICAgICAgICBpID0gaiAtIDE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=
1412774811: (1134, 357), (1155, 504), (1246, 805), (2115, 2004), (4746, 4725)