不知道为什么会T 就过了一个点
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int n,m,p,q;
int color[maxn],fa[maxn];
int rd(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+ch-'0';
ch=getchar();
}
return x*f;
}
int find(int x){
if(fa[x]==x) return x;
return fa[x]=find(fa[x]);
}
int main(){
n=rd();m=rd();p=rd();q=rd();
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=m;i>=1;i--){
int l=(i*p+q)%n+1,r=(i*q+p)%n+1;
if(l>r) swap(l,r);
int fx=find(l),fy=find(r+1);
while(fx<=r){
color[fx]=i;
fa[fx]=fy;
fx=find(fx+1);
}
}
for(int i=1;i<=n;i++) printf("%d\n",color[i]);
return 0;
}