#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <ctime>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <vector>
#define REP(I,A,B) for(int I=A,_END_=B;I<=_END_;I++)
#define REPD(I,A,B) for(int I=A,_END_=B;I>=_END_;I--)
#define RI(X) X=Readint()
#define RII(X,Y) RI(X),RI(Y)
#define RIII(X,Y,Z) RI(X),RI(Y),RI(Z)
#define RS(X) scanf("%s",X)
#define RD(X) scanf("%lf",&X)
#define GCH getchar()
#define PCH(X) putchar(X)
#define MS(X,Y) memset(X,Y,sizeof(X))
#define MC(X,Y,var,len) memcpy(X,Y,sizeof(var)*(len))
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define pb(X) push_back(X)
#define mp(A,B) make_pair(A,B)
#define fr first
#define sc second
#define lch(p) (p+p)
#define rch(p) (p+p+1)
#define lowbit(X) ((X)&(-(X)))
using namespace std;
typedef pair<int,int> poi;
inline int Readint()
{
int ret=0;
int f=1;
char ch;
do
{
ch=GCH;
if (ch=='-') f*=-1;
}while(ch>=0 && (ch<'0' || ch>'9'));
while ('0'<=ch && ch<='9')
{
ret=ret*10+ch-'0';
ch=GCH;
}
return ret*f;
}
void open()
{
freopen("2329.in","w",stdout);
}
void close()
{
fclose(stdin);
fclose(stdout);
}
int n,m;
char op[][10]={"Replace","Swap","Invert","Query"};
char rb()
{
if (rand()&1)
return '(';
else
return ')';
}
void init()
{
n=rand()%20+2;
m=rand()%10+1;
printf("%d %d\n",n,m);
REP(i,1,n)
printf("%c",rb());
printf("\n");
int kind,x,y;
REP(i,1,m)
{
kind=rand()%4;
x=rand()%n+1;
y=rand()%n+1;
if (x>y) swap(x,y);
if (!kind)
printf("%s %d %d %c\n",op[kind],x,y,rb());
else if (kind==3)
{
x=rand()%(n-1)+1;
y=rand()%(n-1)+1;
if (x>y) swap(x,y);
if ((y-x+1)&1) y++;
printf("%s %d %d\n",op[kind],x,y);
}
else
printf("%s %d %d\n",op[kind],x,y);
}
}
int main()
{
srand(time(NULL));
//open();
int _=0;
init();
close();
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDx2ZWN0b3I+CgojZGVmaW5lIFJFUChJLEEsQikgZm9yKGludCBJPUEsX0VORF89QjtJPD1fRU5EXztJKyspCiNkZWZpbmUgUkVQRChJLEEsQikgZm9yKGludCBJPUEsX0VORF89QjtJPj1fRU5EXztJLS0pCiNkZWZpbmUgUkkoWCkgWD1SZWFkaW50KCkKI2RlZmluZSBSSUkoWCxZKSBSSShYKSxSSShZKQojZGVmaW5lIFJJSUkoWCxZLFopIFJJKFgpLFJJKFkpLFJJKFopCiNkZWZpbmUgUlMoWCkgc2NhbmYoIiVzIixYKQojZGVmaW5lIFJEKFgpIHNjYW5mKCIlbGYiLCZYKQojZGVmaW5lIEdDSCBnZXRjaGFyKCkKI2RlZmluZSBQQ0goWCkgcHV0Y2hhcihYKQojZGVmaW5lIE1TKFgsWSkgbWVtc2V0KFgsWSxzaXplb2YoWCkpCiNkZWZpbmUgTUMoWCxZLHZhcixsZW4pIG1lbWNweShYLFksc2l6ZW9mKHZhcikqKGxlbikpCiNkZWZpbmUgZGVidWcoLi4uKSBmcHJpbnRmKHN0ZGVycixfX1ZBX0FSR1NfXykKI2RlZmluZSBwYihYKSBwdXNoX2JhY2soWCkKI2RlZmluZSBtcChBLEIpIG1ha2VfcGFpcihBLEIpCiNkZWZpbmUgZnIgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKI2RlZmluZSBsY2gocCkgKHArcCkKI2RlZmluZSByY2gocCkgKHArcCsxKQojZGVmaW5lIGxvd2JpdChYKSAoKFgpJigtKFgpKSkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHBhaXI8aW50LGludD4gcG9pOwoKaW5saW5lIGludCBSZWFkaW50KCkKewoJaW50IHJldD0wOwoJaW50IGY9MTsKCWNoYXIgY2g7CglkbwoJewoJCWNoPUdDSDsKCQlpZiAoY2g9PSctJykgZio9LTE7Cgl9d2hpbGUoY2g+PTAgJiYgKGNoPCcwJyB8fCBjaD4nOScpKTsKCQoJd2hpbGUgKCcwJzw9Y2ggJiYgY2g8PSc5JykKCXsKCQlyZXQ9cmV0KjEwK2NoLScwJzsKCQljaD1HQ0g7Cgl9CglyZXR1cm4gcmV0KmY7Cn0KCnZvaWQgb3BlbigpCnsKCWZyZW9wZW4oIjIzMjkuaW4iLCJ3IixzdGRvdXQpOwp9CnZvaWQgY2xvc2UoKQp7CglmY2xvc2Uoc3RkaW4pOwoJZmNsb3NlKHN0ZG91dCk7Cn0KCmludCBuLG07CmNoYXIgb3BbXVsxMF09eyJSZXBsYWNlIiwiU3dhcCIsIkludmVydCIsIlF1ZXJ5In07CgpjaGFyIHJiKCkKewoJaWYgKHJhbmQoKSYxKQoJCXJldHVybiAnKCc7CgllbHNlCgkJcmV0dXJuICcpJzsKfQoKdm9pZCBpbml0KCkKewoJbj1yYW5kKCklMjArMjsKCW09cmFuZCgpJTEwKzE7CglwcmludGYoIiVkICVkXG4iLG4sbSk7CglSRVAoaSwxLG4pIAoJCXByaW50ZigiJWMiLHJiKCkpOwoJcHJpbnRmKCJcbiIpOwoJaW50IGtpbmQseCx5OwoJUkVQKGksMSxtKQoJewoJCWtpbmQ9cmFuZCgpJTQ7CgkJeD1yYW5kKCklbisxOwoJCXk9cmFuZCgpJW4rMTsKCQlpZiAoeD55KSBzd2FwKHgseSk7CgkJaWYgKCFraW5kKQoJCQlwcmludGYoIiVzICVkICVkICVjXG4iLG9wW2tpbmRdLHgseSxyYigpKTsKCQllbHNlIGlmIChraW5kPT0zKQoJCXsKCQkJeD1yYW5kKCklKG4tMSkrMTsKCQkJeT1yYW5kKCklKG4tMSkrMTsKCQkJaWYgKHg+eSkgc3dhcCh4LHkpOwoJCQlpZiAoKHkteCsxKSYxKSB5Kys7CgkJCXByaW50ZigiJXMgJWQgJWRcbiIsb3Bba2luZF0seCx5KTsKCQl9CgkJZWxzZQoJCQlwcmludGYoIiVzICVkICVkXG4iLG9wW2tpbmRdLHgseSk7Cgl9Cn0KCmludCBtYWluKCkKewoJc3JhbmQodGltZShOVUxMKSk7CgkvL29wZW4oKTsKCWludCBfPTA7Cglpbml0KCk7CgljbG9zZSgpOwoJcmV0dXJuIDA7Cn0K