#include<bits/stdc++.h>
using namespace std;
const int N=5005;
//最搞5005?!
char b[2*N],ans[N];
int main(){
ios::sync_with_stdio(0);
//加速?!
cin.tie(0);
//加速?!
cout.tie(0);
//加速?!
string a;
cin>>a;
int n=a.size();
for(int i=0;i<n;i++){
//扩倍?!
b[i+1]=a[i];
//从一开始存储?!
b[n+i+1]=a[i];
//在后面存储一边同样的b,方便枚举?!
}
for(int i=1;i<=n;i++)
ans[i]=b[i];
//存储前n个?!
for(int i=2;i<=n;i++){
bool fl=0;
for(int j=0;j<n;j++){
char a1=b[i+j];
//尾巴?!
char a2=ans[j+1];
//首 ?!
if(a1<a2){
//首小尾?!
fl=1;
//标记?!
break;
//回回?!
}
if(a1>a2){
//否否?!
break;
//回回?!
}
}
if(fl){
//小小?!
for(int j=0;j<n;j++)
ans[1+j]=b[i+j];
//大安?!
}
}
for(int i=1;i<=n;i++)
cout<<ans[i];
//输出大安?!
return 0;
}//douzhichupinbishijingpin
#include<bits/stdc++.h>
#include<map>
using namespace std;
const int a=1005;
const int b=1005;
int c[a][b];
int d[a];
int e[2][b][a];
map<int,int> f;
int g;
int h[b],i[b*b],j[b*b],k[b*b],l;
void m(int n,int o,int p) {
l++;
j[l]=o;
k[l]=p;
i[l]=h[n];
h[n]=l;
}
int q(int r) {
if(f.find(r)==f.end()) {
f[r]=++g;
}
return f[r];
}
int main() {
freopen("polygon.in","r",stdin);
freopen("polygon.out","w",stdout);
int n,s,t;
cin>>n>>s>>t;
for(int u=1; u<=n; u++) {
cin>>d[u];
for(int v=1; v<=d[u]; v++) {
cin>>c[u][v];
q(c[u][v]);
}
}
memset(h,-1,sizeof(h));
for(int u=1; u<=n; u++) {
for(int v=1; v<=d[u]; v++) {
int w=q(c[u][v]);
for(int x=v+1; x<=d[u]&&x-v+1<=s; x++) {
int y=q(c[u][x]);
m(w,y,u);
}
}
}
while(t--) {
int r,z;
cin>>r>>z;
int aa=q(z);
memset(e,0,sizeof(e));
for(int u=1; u<=n; u++) {
for(int v=1; v<=d[u]; v++) {
if(c[u][v]!=1)continue;
for(int bb=v+1; bb<=d[u]&&bb-v+1<=s; bb++) {
int cc=q(c[u][bb]);
e[1][cc][u]=1;
}
}
}
if(r==1) {
bool dd=false;
for(int u=1; u<=n; u++) {
if(e[1][aa][u]) {
dd=true;
}
}
if(dd) {
cout<<"Yes"<<'\n';
} else {
cout<<"No"<<'\n';
}
continue;
}
int ee=1;
int ff=2*n+5;
if(r<ff) {
ff=r;
}
bool gg=false;
for(int hh=2; hh<=ff; hh++) {
int ii=ee^1;
memset(e[ii],0,sizeof(e[ii]));
for(int jj=1; jj<=g; jj++) {
for(int kk=1; kk<=n; kk++) {
if(!e[ee][jj][kk])continue;
for(int ll=h[jj]; ll!=-1; ll=i[ll]) {
int mm=j[ll];
int nn=k[ll];
if(nn==kk)continue;
e[ii][mm][nn]=1;
}
}
}
ee=ii;
if(hh==r) {
for(int u=1; u<=n; u++) {
if(e[ee][aa][u]) {
gg=true;
}
}
break;
}
}
if(r<=ff) {
if(gg) {
cout<<"Yes"<<'\n';
} else {
cout<<"No"<<'\n';
}
} else {
bool oo=false;
for(int u=1; u<=n; u++) {
if(e[ee][aa][u]) {
oo=true;
}
}
if(oo) {
cout<<"Yes"<<'\n';
} else {
cout<<"No"<<'\n';
}
}
}
return 0;
}