# include<bits/stdc++.h> usingnamespace std; constint N=2000000000; constint M= pow(N,0.7)+1000; constint SQN=sqrt(N); int l1[SQN+2],l2[SQN+2],l3[SQN+2],l7[SQN+2]; unsignedchar used[M]; intmain(){ printf("%d\n",M); for(int i=1;i<=SQN;i++) l1[i]=l2[i]=l3[i]=l7[i]=1; int ans=0; for(int l=0,w,b;l<=N;l+=M) { int r = min(l + M, N + 1); for (int a = 1; a * a + l1[a] * l1[a] < r; a++) { for (b = l1[a]; (w = a * a + b * b) < r; b++) used[w - l] |= 1; l1[a] = b; } for (int a = 1; a * a + l2[a] * l2[a] * 2 < r; a++) { for (b = l2[a]; (w = a * a + b * b * 2) < r; b++) used[w - l] |= 2; l2[a] = b; } for (int a = 1; a * a + l3[a] * l3[a] * 3 < r; a++) { for (b = l3[a]; (w = a * a + b * b * 3) < r; b++) used[w - l] |= 4; l3[a] = b; } for (int a = 1; a * a + l7[a] * l7[a] * 7 < r; a++) { for (b = l7[a]; (w = a * a + b * b * 7) < r; b++) used[w - l] |= 8; l7[a] = b; } for (int i = l; i < r; i++) { if (used[i - l] == 15) ++ans; used[i - l] = 0; } } printf("%d\n",ans); }