/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigInteger;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
for(int c = 1; c <= 2*n; c++) {
int minp = 0;
for(int h = 0; h <= n; h++) {
if(h>0) minp += c >= 2*h-c%2 ? 2*h - c%2 : c;
int maxp
= Math.
min(n
*(c
-1)+h, n
*n
); for(int p = minp; p <= maxp; p++) {
if(c%2==1 && h>0)
sum = sum.add(a0[h-1][p-h]);
else if(c%2==0 && h<n)
sum = sum.add(a0[h+1][p-h]);
a1[h][p] = sum;
}
}
tm=a0; a0=a1; a1=tm;
}
for(int p = 0; p <= n*n; p++) {
for(int h = 0; h <= n; h++) sum = sum.add(a0[h][p]);
s[p] = sum;
}
for(int p = 0; p < n*n; p++) ans = ans.add(s[p].multiply(s[p]));
return ans.shiftLeft(1).add(s[n*n].multiply(s[n*n]));
}
public static void main
(String[] args
) { for(int n = 0;; n++) {
System.
out.
println(n
+ " " + count
(n
)); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJc3RhdGljIEJpZ0ludGVnZXIgY291bnQoaW50IG4pIHsKICAgICAgICBCaWdJbnRlZ2VyW11bXSBhMCA9IG5ldyBCaWdJbnRlZ2VyW24rMV1bbipuKzFdLCBhMSA9IG5ldyBCaWdJbnRlZ2VyW24rMV1bbipuKzFdLCB0bTsKCiAgICAgICAgZm9yKGludCBoID0gMDsgaCA8PSBuOyBoKyspIGEwW2hdWzBdID0gaCUyPT0wPyBCaWdJbnRlZ2VyLk9ORTogQmlnSW50ZWdlci5aRVJPOwoKICAgICAgICBmb3IoaW50IGMgPSAxOyBjIDw9IDIqbjsgYysrKSB7ICAgICAKICAgICAgICAgICAgaW50IG1pbnAgPSAwOwogICAgICAgICAgICBmb3IoaW50IGggPSAwOyBoIDw9IG47IGgrKykgewogICAgICAgICAgICAgICAgamF2YS51dGlsLkFycmF5cy5maWxsKGExW2hdLCBCaWdJbnRlZ2VyLlpFUk8pOwogICAgICAgICAgICAgICAgaWYoaD4wKSBtaW5wICs9IGMgPj0gMipoLWMlMiA/IDIqaCAtIGMlMiA6IGM7CgogICAgICAgICAgICAgICAgaW50IG1heHAgPSBNYXRoLm1pbihuKihjLTEpK2gsIG4qbik7CiAgICAgICAgICAgICAgICBmb3IoaW50IHAgPSBtaW5wOyBwIDw9IG1heHA7IHArKykgewogICAgICAgICAgICAgICAgICAgIEJpZ0ludGVnZXIgc3VtID0gYTBbaF1bcC1oXTsKCiAgICAgICAgICAgICAgICAgICAgaWYoYyUyPT0xICYmIGg+MCkgCiAgICAgICAgICAgICAgICAgICAgICAgIHN1bSA9IHN1bS5hZGQoYTBbaC0xXVtwLWhdKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGMlMj09MCAmJiBoPG4pIAogICAgICAgICAgICAgICAgICAgICAgICBzdW0gPSBzdW0uYWRkKGEwW2grMV1bcC1oXSk7CgogICAgICAgICAgICAgICAgICAgIGExW2hdW3BdID0gc3VtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRtPWEwOyBhMD1hMTsgYTE9dG07CiAgICAgICAgfQogICAgICAgIEJpZ0ludGVnZXJbXSBzID0gbmV3IEJpZ0ludGVnZXJbbipuKzFdOwogICAgICAgIGZvcihpbnQgcCA9IDA7IHAgPD0gbipuOyBwKyspIHsKICAgICAgICAgICAgQmlnSW50ZWdlciBzdW0gPSBCaWdJbnRlZ2VyLlpFUk87CiAgICAgICAgICAgIGZvcihpbnQgaCA9IDA7IGggPD0gbjsgaCsrKSBzdW0gPSBzdW0uYWRkKGEwW2hdW3BdKTsKICAgICAgICAgICAgc1twXSA9IHN1bTsKCiAgICAgICAgfQoKICAgICAgICBCaWdJbnRlZ2VyIGFucyA9IEJpZ0ludGVnZXIuWkVSTzsKICAgICAgICBmb3IoaW50IHAgPSAwOyBwIDwgbipuOyBwKyspIGFucyA9IGFucy5hZGQoc1twXS5tdWx0aXBseShzW3BdKSk7CiAgICAgICAgcmV0dXJuIGFucy5zaGlmdExlZnQoMSkuYWRkKHNbbipuXS5tdWx0aXBseShzW24qbl0pKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgZm9yKGludCBuID0gMDs7IG4rKykgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obiArICIgIiArIGNvdW50KG4pKTsKICAgICAgICB9CiAgICB9Cn0=