用考场上 AC 代码稍微改一下然后 WA 了 /ll
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fr first
#define sc second
inline int read(){
int res=0,f=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
return res*f;
}
const int N=505;
int n,k,vis[N][N][N];
signed main(){
// freopen("pixel.in","r",stdin);
// freopen("pixel.out","w",stdout);
n=read(),k=read();
if (k==1){
cout<<"0 0 0\n";
return 0;
}
if (k==2){
cout<<"0 0 0\n1 1 1\n";
return 0;
}
if (k==3){
cout<<"0 0 1\n0 1 0\n1 0 0\n";
return 0;
}
int t=0;
for (int i=2;i<=n&&!t;i++)
if (i*i<=k&&k<=i*i*i)
t=i;
n=t;
for (int y=1;y<=n;y++)
for (int z=1;z<=n;z++){
int x=z+y-1;
if (x>n) x-=n;
cout<<x-1<<' '<<y-1<<' '<<z-1<<'\n';
vis[x][y][z]=1;
}
k-=n*n;
for (int x=1;x<=n&&k;x++)
for (int y=1;y<=n&&k;y++)
for (int z=1;z<=n&&k;z++)
if (!vis[x][y][z])
cout<<x-1<<' '<<y-1<<' '<<z-1<<'\n',k--;
return 0;
}