在pushup的时候多加几个取模
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstring>
#include<ctime>
#include<cstdlib>
const int mod=100;
int n,m;
inline int f(){return ((rand()<<16)+rand());}
char s[100007];
struct q{int d,l,lt;};
std::vector<q> v;
int main()
{
srand(time(NULL));
m=mod;n=f()%mod+1;
for(int i=1;i<=n;++i)s[i]=rand()%26+'a';
for(int i=1;i<=n/3;++i)
{
int l=f()%n+1,r=f()%n+1,lt=f()%(n-r+1)+1;
memmove(s+l,s+r,lt);v.push_back({r-l,l,lt});
}
s[n+1]=0;puts(s+1);
printf("%d\n",m);
while(m--)
{
int x,y;
while(1)
{
q s=v[f()%v.size()];
x=f()%s.lt+s.l,y=x+s.d;
if(x>0&&x<=n&&y>0&&y<=n)break;
}
printf("Q %d %d\n",x,y);
}
return 0;
}