```cpp
#include<cstdio>
#include<cstring>
bool bz[130000];
int f[130000];
int n,m,t=0;
bool o=false;
int main()
{
scanf("%d %d",&n,&m);
int s=0;
for(register int i=0;i<=m;i++)
for(register int j=i;j<=m;j++)
bz[i*i+j*j]=true;
for(register int i=0;i<=m*m*2;i++)
if(bz[i]) f[++t]=i;
const int r=m*m*2,l=r/(n-1);
for(register int j=1;j<=l;j++)//枚举公差
for(register int i=1;i<=t;i++)//枚举起点
{
bool p=true;
if(f[i]+j*(n-1)>r) break;
int d=f[i];
for(register int k=1;k<n;k++)
{
d=d+j;
if(!bz[d])
{
p=false;
break;
}
}
if(p)
{
printf("%d %d\n",f[i],j);
o=true;
}
}
if(!o) printf("NONE");
}
```
by Mark_ZZY @ 2017-05-26 13:09:06