semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char s[501],a[250][6],m[6];
	int b[250],max=0,i,n,j,k;
	scanf("%d\n",&n);
    gets(s);
	for(i=0,k=0;;i++,k++)
	{
		for(j=0;j<n;j++)
		   m[j]=s[j+i];
		m[n]='\0';
		if(m[n-1]=='\0') break;
		for(j=0;j<k;j++)
		if(strcmp(a[j],m)==0) break;
		if(j!=k) 
		{b[j]++;
		k--;}
		else 
		{strcpy(a[k],m);
		b[k]=1;}
	}
	for(i=0;i<k;i++)
	{
		if(max<b[i]) max=b[i];
	}
	if(max==1) printf("NO\n");
	else
	{printf("%d\n",max);
	for(i=0;i<k;i++)
	{
		if(max==b[i])
			printf("%s\n",a[i]);
	}}
	return 0;
}
void ngram(char str[],int n)
{
	char ng[2000][5]={'\0'};
	int i;
	int Len=strlen(str);
	for(i=0;i<Len-n+1;i++)
	{
		strncpy(ng[i],str+i,n);
	}
	int j;int max=1,count;
	for(i=0;i<Len-n+1;i++)
	{
		count=1;
		for(j=i+1;j<Len-n+1;j++)
		{
			if(strcmp(ng[i],ng[j])==0)
				count++;
		}
		if(count>=max)
			max=count;
	}
	if(max==1)
		printf("NO");
	else
	{
		printf("%d\n",max);
		for(i=0;i<Len-n+1;i++)
		{
			count=1;
			for(j=i+1;j<Len-n+1;j++)
			{
				if(strcmp(ng[i],ng[j])==0)
					count++;
			}
			if(count==max)
				printf("%s\n",ng[i]);
		}
	}
}
void main()
{
	int n;
	char str[500];
	scanf("%d%s",&n,str);
	ngram(str,n);
}
main()
{
	char x[501];
	int y[501];
	int i,j,k,l,h,n,m;
	scanf("%d",&n);
	scanf("%s",x);
	m=strlen(x);
	m=m-n;
	for(i=0;i<=m;i++)
	{
		l=0;//zongshu
		for(k=i;k<=m;k++)
		{
			h=0;//panding
			for (j=0;j<n;j++)
			{
				if (x[i+j]!=x[k+j]) h++;
			}
			if (h==0) l++;
		}
		y[i]=l;
	}
	k=y[0];
	for(i=1;i<=m;i++)
	{
		if (y[i]>k) k=y[i];
	}
if (k==1) printf("NO");
else{
	printf("%d\n",k);
	for(i=0;i<=m;i++)
	{
		if (k==y[i])
		{
			for (j=0;j<n;j++)
			{
				printf("%c",x[i+j]);
			}
			printf("\n");
		}
	}
}
}
int i,j,n,k;
int bijiao(char temp[],char c[])
{
	int q,w=1;
	for(q=0;q<n;q++)
	{
		if(temp[q]!=c[k+q])
			w=0;
	}
	return w;
}
int main()
{
	int t=0,cao,max=0,l,a[1000]={0};
	char c[501]={0},temp[6]={0},A[1000][6]={0};
	scanf("%d",&n);
	cao=getchar();
	gets(c);
	l=strlen(c);
	for(i=0;i<=(l-n);i++)
	{
		for(j=0;j<n;j++)
		{
			temp[j]=c[i+j];
		}
		for(k=0;k<=(l-n);k++)
		{
			t=t+bijiao(temp,c);
		}
		a[i]=t;
		strcpy(A[i],temp);
		if(max<t)
		{
			max=t;
			t=0;
		}
		else
		{
			t=0;
		}
	}
	if(max==1)
	{
		printf("NO");
		return 0;
	}
	for(i=0;i<=(l-n);i++)
	{
		for(j=-1;j<i;j++)
		{
			if(strcmp(A[i],A[j])==0)
				a[i]=0;
		}
	}
	printf("%d\n",max);
	for(i=0;i<=(l-n);i++)
	{
		if(a[i]==max)
		{
			puts(A[i]);
			printf("\n");
		}
	}
	return 0;
}
void main()
{
	unsigned long int n,j,i,len,b[500]={0},a[501]={0},c=0,max=0,m[500]={0},t=0,g=0,z=0;
	char s[501]={'\0'};
	scanf("%d",&n);
	scanf("%s",s);
	len=strlen(s);
	for(i=0;i<=len-n;i++)
		for(j=0;j<n;j++)
		{*(a+i)=*(a+i)*100+*(s+j+i)-32;
		}
	for(i=0;i<len-n+1;i++)
	{for(j=0;j<len-n+1;j++)
	{if(*(a+i)==*(a+j))
			{(*(b+i))++;
	}}}
	for(i=0;i<len-n+1;i++)
		if(*(b+i)>1)
			c=1;
	if(c==0)
		printf("NO");
         else{
	for(g=0;g<len-n+1;g++)
		if(*(b+g)>max)
		max=*(b+g);
		z=0;
    for(i=0;i<len-n+1;i++)
		{if(*(b+i)==max)
		 {z=0;
			for(j=0;j<t&&i!=m[j];j++)
			if(*(a+i)==*(a+*(m+j)))
				z=1;
		if(z==0)
		{*(m+t)=i;
		t++;}}
		}

	printf("%d\n",max);
	for(j=0;j<t;j++)
	{for(i=0;i<n;i++)
		printf("%c",*(s+i+*(m+j)));
	printf("\n");}}
}
int main()
{
	int n,i,j,k,len,max=1,mark=0;
	char s[505],temp[5];
	struct example
	{
		int word;
		int num;
	}a[505];
	scanf("%d",&n);
	scanf("%s",s);
	len=strlen(s);
	for(i=0;i<len-n+1;i++)
	{
		a[i].word=0;a[i].num=1;
		for(j=0;j<n;j++)
		{
			a[i].word=a[i].word*100+s[i+j]-32;
		}
	}
	i=0;
	for(i=0;i<len-n+1;i++)
	{
		for(j=i+1;j<len-n+1;j++)
		{
			if(a[i].word!=0&&a[i].word==a[j].word)
			{
				a[i].num++;
				a[j].word=0;
			}
		}
	
	}
	for(i=0;i<len-n+1;i++)
	{
		if(a[i].num>max)
			max=a[i].num;
	}
	if(max==1)
		printf("NO");
	else
	{
		printf("%d\n",max);
   
	for(i=0;i<len-n+1;i++)
	{
		if(a[i].num==max)
		{
			for(j=0;j<n;j++)
			{
				printf("%c",s[i+j]);
			}
			printf("\n");
		}
	}
	}

	return 0;
}
int main ()
{   int n,i,j,shu[500],k;
    unsigned int l;
    char s[500],m[500][6];
    scanf("%d",&n);
	getchar();
	gets(s);
	l=strlen(s);
	for(i=0;i<=l-n;i++)
	{   for (j=0;j<n;j++)
	{     m[i][j]=s[i+j];
	      m[i][n]='\0';
	}
	}
    for(i=0;i<=l-n;i++)
	{  shu[i]=1;
	   for(j=i+1;j<=l-n;j++)
	   
	   if( strcmp(m[i],m[j])==0)
		     shu[i]=shu[i]+1;  
	}
	k=0;
    for(i=0;i<=l-n;i++)
	   if (shu[i]>k)
	    k=shu[i]; 
	   if(k==1)
		   printf("NO\n");
	   else
	   {
	    printf("%d\n",k);
	    for(i=0;i<=l-n;i++)
		if (shu[i]==k)
			 printf("%s\n",m[i]);
	   }
	return 0;
}
main()
{
	int count[500],m=0,al;
	char a[500],b[500],c[500];
	int n,i,j,k;
	scanf("%d\n%s",&n,a);
	for(i=0;i<500-n;i++)
	{
		count[i]=0;
	}
	al=strlen(a);
	for(i=0;i<=al-n;i++)
	{
		//?????b 
		for(j=0;j<n;j++)
		{
			b[j]=a[i+j];
		}
		b[n+i]='\0';
		//??c??? 
		for(k=i;k<=al-n;k++)
		{
			for(j=0;j<n;j++)
			{
				c[j]=a[j+k];
			}
			c[n+k]='\0';
			if(strcmp(b,c)==0)
			count[i]++;
		}
	}
	//?????
	for(i=0;i<al-n;i++)
	{
		if(count[m]<count[i])
		m=i;
	}
	//?? 
	if(count[m]==1)
	printf("NO");
	else
	{
	printf("%d\n",count[m]);
	for(i=0;i<=al-n;i++)
	{
		for(j=0;j<n;j++)
		{
			b[j]=a[i+j];
		}
		b[n]='\0';
		if(count[i]==count[m])
		printf("%s\n",b);
	}
	}
}
int main()
{ 
     char a[501];
     int m[500];
     int n,i,j,t,s,x=0;
     scanf("%d\n",&n);
     gets(a);
     t = strlen(a);
     char k[501][6];
     for (i=0;i<t+1-n;i++)
     {
         for (j=0;j<n;j++){
         k[i][j]=a[i+j];
         }
         m[i]=0;
     }
     for (i=0;i<t+1-n;i++){
         for(j=i;j<t+1-n;j++){
            s=strcmp(k[i],k[j]);
            if(s==0) m[i]++;    
         }
         if (m[i]>x) x=m[i];
     }
     if (x==1) printf("NO");
     else
     {
         printf("%d\n",x);
         for (i=0;i<t-n;i++)
         {
             if(m[i]==x)
             printf("%s\n",k[i]);
         }
     }

  return 0;
}
int main(){
	char a[501];
	char b[501][5];
	int c[501]={0};
	int n,i,j,k,N;
	int sgn,max=0,num,xtz;
	scanf("%d",&n);
	scanf("%s",a);
	N=strlen(a);
	for(j=0;j<n;j++)
		b[0][j]=a[j];
	b[0][j]=0;
	c[0]++;
	for(i=1,k=1;i<N-n+1;i++){
		for(j=0;j<n;j++)
			b[k][j]=a[i+j];
		b[k][j]=0;
		for(j=0,sgn=1;j<k;j++){
			if(strcmp(b[j],b[k])==0){
				sgn=0;
				xtz=j;
				break;
			}
		}
		if(sgn){
			c[k]++;
			k++;
		}
		else{
			c[xtz]++;
		}
	}
	num=k-1;
	for(i=0;i<=num;i++){
		if(c[i]>max)
			max=c[i];
	}
	if(max==1)
		printf("NO\n");
	else{
		printf("%d\n",max);
		for(i=0;i<=num;i++){
			if(c[i]==max)
				printf("%s\n",b[i]);
		}
	}
	return 0;
}
main()
{
      int n,i,j,len;
      char a[600],c;
      scanf("%d",&n);
      scanf("%c",&c);
      scanf("%s",a);
      len=strlen(a);
      char b[600][5]={0};
      int outcome[600]={0};
      for(i=0;i<=len-n;i++)
      {
                           for(j=0;j<=n-1;j++)
                           {
                                              b[i][j]=a[i+j];
                           }
                           for(j=n;j<=5;j++) b[i][j]=0;
                           
      }//??len-n+1?n-gram
      for(i=0;i<=len-n;i++)
      {
                           outcome[i]=1;
                           for(j=i+1;j<=len-n;j++)
                           if(strcmp(b[i],b[j])==0) outcome[i]+=1;
      }
      int max=0;
      for(i=0;i<=len-n;i++)
      if(outcome[i]>max) max=outcome[i];
      if(max==1) printf("NO");
      else
      {
      printf("%d\n",max);
      for(i=0;i<=len-n;i++)
      {
                           if(outcome[i]==max) printf("%s\n",b[i]);
      }
      }

      

}
int main()
{
	char *p = NULL; 
	char c[510]; 
	int n, len, i, cnt[510] = {0}, t[510], s, j, max; 
	cin >> n; 
	cin.get(); 
	cin.getline(c, 510);
	len = strlen(c); 
	for ( i = 0; i < len - n; i++ )
	{
		/*cout<<cnt[2]<<endl;*/
		p = c + i + 1; 
		for ( ; p <= c + len - n + 1; p++ )
		{
			for ( s = 0; s <= n - 1; s++ )
			{
				if ( c[i+s] != *(p+s) )
					break;
			}
			if ( s == n )
				cnt[i]++; 
		}
	} 
	max = 0;  
	s = 0; 
	/*for (i = 0; i < len; i++)
		cout<<cnt[i]<<" ";
	cout<<endl;*/
	for ( j = 0; j < len; j++ )
	{
		if ( cnt[j] > max )
		{
			s = 0; 
			max = cnt[j];
			t[s] = j; 
		}
		else 
			if ( cnt[j] == max )
			{
				s++; 
				t[s] = j; 
			}
	}
	if ( max )
	{
		cout << max + 1 << endl; 
		for ( i = 0; i <= s; i++ )
		{
			/*cout << i<<endl;
			cout << t[i]<<endl;*/
			for ( j = 0; j < n - 1; j++ )
				cout << c[t[i]+j]; 
			cout << c[t[i]+j] << endl; 
		}
	}
	else
		cout << "NO" << endl; 
	return 0; 
}
struct 
{
	char str[10];
	int count;
}ngram[500];
void main()
{
	int n,m,len,i,j;
	scanf("%d",&n);
	char s[510];
	scanf("%s",s);
	len=strlen(s);
	m=len-n+1;
	for(i=0;i<len-n+1;i++)
		for(j=0;j<n;j++)
			ngram[i].str[j]=s[i+j];
	for(i=0;i<m;i++)
		ngram[i].count=1;
	for(i=0;i<m;i++)
		for(j=i+1;j<m;j++)
			if(strcmp(ngram[i].str,ngram[j].str)==0)
			{
				ngram[i].count++;
				ngram[j].count=0;
			}
	int max=1;
	for(i=0;i<m;i++)
		if(ngram[i].count>max)max=ngram[i].count;
	if(max==1)
		printf("NO");
	else
	{i=0;
	while(ngram[i].count!=max)
		i++;
	printf("%d\n",max);
	printf("%s\n",ngram[i].str);
	for(i++;i<m;i++)
		if(ngram[i].count==max)
			printf("%s\n",ngram[i].str);}

}
int main()

{	int i,j,n,max=0;
	int sum[500]={0};
	char c[500];
	char d[500][500];
	char kongbai[500]={'0'};
	scanf("%d",&n);
	scanf("%s",c);
	for(i=0;i<strlen(c)-n+1;i++){
		for(j=0;j<n;j++){
			d[i][j]=c[i+j];
		}
	}
	for(i=0;i<strlen(c)-n+1;i++){
		d[i][n]='\0';
	}
	for(i=0;i<strlen(c)-n+1;i++){
		for(j=i;j<strlen(c)-n+1;j++){
			if(strcmp(d[i],d[j])==0){
				sum[i]++;
			}
		}
	}
	for(i=0;i<strlen(c)-n+1;i++){
		if(sum[i]>=max){
			max=sum[i];
		}
	}
	if(max==1){
		printf("NO");
	}
	else{
		printf("%d\n",max);
		for(i=0;i<strlen(c)-n+1;i++){
			if(sum[i]==max){
				puts(d[i]);
			}
		}
	}
printf("\n");
	return 0;
}
main()
{
      char b[502];
      int a[502]={1,0};
      int n,c;
      int i,j,k,l,m,t;
      scanf("%d",&n);
      scanf("%s",b);
      c=strlen(b);
      for(i=1;i<=c-n;i++)
      {
          for(k=0;k<i;k++)
          {
              for(l=0,j=0;j<=n-1;j++)
              {
                  if(b[i+j]!=b[k+j])
                  {
                      l++;
                      break;
                  }
              }
              if(l==0)break;
          }
          if(l==0)
          {
              a[k]++;
          }
          else
          {
              a[i]++;
          }
      }
      for(m=a[0],i=1;i<=c-n;i++)
      {
          if(a[i]>=m)
          m=a[i];
      }
      if(m>1)
      {
      printf("%d\n",m);
      for(i=0;i<=c-n;i++)
      {
          if(a[i]==m)
          {
              for(j=0;j<=n-1;j++)
              printf("%c",b[i+j]);
              printf("\n");
          }
      }
      }
      if(m==1)
      printf("NO\n");
     }
void main()
{
	char str[MAX];
	int n,len,i,j=0,k,flag,max;
	struct subs{
		char s[5];
		int num;
	}sub[MAX];

	scanf("%d",&n);
	getchar();
	gets(str);
	len=strlen(str);

	for(i=0;i<=len-n;i++){
		(sub+i)->num=0;
		if(i==0){
			strncpy((sub+j)->s,str+i,n);
			(sub+j)->s[n]='\0';
			(sub+j)->num++;
			j++;
		}
		else{
			flag=1;
			for(k=0;k<j;k++){
				if( strncmp((sub+k)->s,str+i,n)==0 ){
					(sub+k)->num++;
					flag=0;
					break;
				}
			}

			if(flag){
				strncpy((sub+j)->s,str+i,n);
				(sub+j)->s[n]='\0';
				(sub+j)->num++;
				j++;
			}
		}
	}

	for(i=0;i<j;i++){
		if(i==0)
			max=(sub+i)->num;
		else if( (sub+i)->num>max )
			max=(sub+i)->num;
	}

	if(max==1)
		printf("NO\n");
	else{
		printf("%d\n",max);
		for(i=0;i<j;i++)
			if((sub+i)->num==max)
				puts((sub+i)->s);
	}
}
int mark=1, n, b[1000]={0}, c[1000]={0}, max=0;	
char a[1000];
int work(int i, int j)
{
	int k=0;
	while(a[i+k]==a[j+k]) 
	{
      if (k<n-1)
		  k++;
	  else
		  return 1;
	}
	return 0;
	
}
int main()
{
	int i, j;
	scanf("%d%s", &n,a);
	for (i=0; i<=strlen(a)-n; i++)
	{
		mark=1;
		for(j=i+1; j<=strlen(a)-n; j++)
		{
			if (work(i, j)==1 && b[j]!=1)
			{
				mark+=1;
			
				b[j]=1;
			}
			
		}
			if (mark>max)
				{
					max=mark;
				}


	}
	if (max>1)
	printf("%d\n", max);
    
		for (i=0; i<=strlen(a)-n; i++)
	{
		mark=1;
		for(j=i+1; j<=strlen(a)-n; j++)
		{
			if (work(i, j)==1 && c[j]!=1)
			{
				mark+=1;
				c[j]=1;
			}
			
		}
			if (mark==max)
			{
				if (mark>1)
				{
				for (int k=0; k<n; k++)
				{
				printf("%c" , a[i+k]);
				}
				printf("\n");
				}
			
			}
		
	}
		if (max==1)
				printf("NO");
		return 0;
}
void main()
{
	char s[501],str2[500][6];
	int i,a,j,t,b,k[500],temp,max,n,l;
	scanf("%d\n",&n);
	gets(s);
	l=strlen(s);
	for(i=0;i<l;i++)
	{
		for(j=0;j<n;j++)
			str2[i][j]=s[i+j];
			str2[i][j]='\0';
	}
	for(i=0;i<l;i++)
		k[i]=1;
	for(i=0;i<l;i++)
	{
		for(j=i+1;j<l;j++)
		{
			b=strcmp(str2[i],str2[j]);
			if(b==0)
				k[i]=k[i]+1;
		}
	}
	max=k[0];
	for(i=0;i<=l;i++)
	{
		if(max<k[i])
			max=k[i];
	}
	t=0;
	if(max<=1)
		printf("NO");
	else 
	{
		printf("%d\n",max);
		for(i=0;i<=l;i++)
		{	
			if(k[i]==max)
			{
				for(a=i;a>=0;a--)
				{
					if(strcmp(str2[i],str2[j])!=0)
						temp=1;
					else temp=0;
				}
				if(temp==1)
					printf("%s\n",str2[i]);
			}
		}
	}
}
int main()
{
    char a[501],s[500][5],tmp;
    int m[500];
    int n,i,j,max;
    scanf("%d",&n);
    scanf("%s",a);
    for(i=0;i<=499;i++) m[i]=1;
    for(i=0;i<=strlen(a)-n;i++)
    {
        for(j=0;j<=n-1;j++)
        {
            s[i][j]=a[i+j];
        }
        s[i][n]='\0';
    }
    for(i=0;i<=strlen(a)-n-1;i++)
    {
        if(m[i]==-1) continue;
        for(j=i+1;j<=strlen(a)-n;j++)
        {
            if(strcmp(s[i],s[j])==0)
            {
                m[i]++;
                m[j]=-1;
            }
        }
    }
    max=m[0];
    for(i=0;i<=strlen(a)-n;i++)
    {
        max=(max>m[i])? max : m[i];
    }    
    if(max>1)
    {
        printf("%d\n",max);
        for(i=0;i<=strlen(a)-n;i++)
        {
            if(m[i]==max) printf("%s\n",s[i]);
        }
    }
    else printf("NO");
    return 0;
}
int main()
{
	int l,m,n,j,k,i,p,c[500],v=0;
	char a[502];
	scanf("%d",&n);
	scanf("%s",a);
	l=strlen(a);
    for(i=0;i<l-n+1;i++)
    {
		c[i]=1;
		for(j=i+1;j<l-n+1;j++)
		{ 
			p=1;
			for(k=0;k<n;k++)
			if (a[i+k]!=a[j+k]) p=0;
			if(p) c[i]++;
		}
		
	}
	p=0;
	for(i=0;i<l-n+1;i++)
	if(c[0]!=c[i]) p=1;
	if(p)
	{
	for(i=0;i<l-n+1;i++)
	 {
			p=1;
			for(j=0;j<l-n+1;j++)
			if (c[i]<c[j]) p=0;
			if(p) 
			{
				v++;
				if(v==1) printf("%d",c[i]);
			    printf("\n");
			    for(m=0;m<n;m++)
			    printf("%c",a[i+m]);
			}
	 }
    }
    else printf("NO");
}
int main()
{
	int n;
	scanf("%d",&n);
	getchar();
	char str[501];
	gets(str);
	int len,q[501];
	for(len=0;str[len]!=0;len++);
	int i,j,u,v,V,max=0;
	for(i=0;i<=len-n;i++)
	{
		q[i]=1;
		for(u=i+1;u<=len-n;u++)
		{
			V=1;
			for(v=0;v<n;v++)
			{
				if(str[i+v]!=str[u+v])
				{
					V=0;
					break;
				}
			}
			if(V==1)
			{
				q[i]=q[i]+1;
				if(q[i]>max)
					max=q[i];
			}
		}
	}
	if(max==0)
	{
		printf("NO\n");
		return 0;
	}
	printf("%d\n",max);
	for(i=0;i<len-n;i++)
	{
		if(q[i]==max)
		{
			for(j=0;j<n;j++)
			{
				printf("%c",str[i+j]);
			}
			putchar('\n');
		}
	}
	return 0;
}
main()
{
      int l,i,k,j,n;
      int t=1;
      char str[500];
      scanf("%d",&n);
      scanf("%s",str);
      l=strlen(str);
      char s[500][5];
      int a[500];
      for(i=0;i<l-n+1;i++)
      {
          a[i]=1;
          for(j=0;j<n;j++)
          s[i][j]=str[i+j];
          s[i][j]='\0';
      }
      for(i=0;i<l-n;i++)
         for(j=i+1;j<l-n+1;j++)
         {
             if(strcmp(s[i],s[j])==0)
             a[i]++;
             //printf("%d %d\n",a[i],i);
         }
         
         for(i=0;i<l-n;i++)
         {
             if(t<a[i])t=a[i];
         }
         if(t==1)printf("NO");
         else
         {
             printf("%d\n",t);
             for(i=0;i<l-n;i++)
             {
                 if(t==a[i])
                 printf("%s\n",s[i]);
             }
         }

          
  
}
void main()
{
	char str[MAX];
	int n,len,i,j=0,k,flag,max;
	struct subs{
		char s[5];
		int num;
	}sub[MAX];

	scanf("%d",&n);
	getchar();
	gets(str);
	len=strlen(str);

	for(i=0;i<=len-n;i++){
		(sub+i)->num=0;
		if(i==0){
			strncpy((sub+j)->s,str+i,n);
			*((sub+j)->s+n)='\0';
			(sub+j)->num++;
			j++;
		}
		else{
			flag=1;
			for(k=0;k<j;k++){
				if( strncmp((sub+k)->s,str+i,n)==0 ){
					(sub+k)->num++;
					flag=0;
					break;
				}
			}

			if(flag){
				strncpy((sub+j)->s,str+i,n);
				*((sub+j)->s+n)='\0';
				(sub+j)->num++;
				j++;
			}
		}
	}

	for(i=0;i<j;i++){
		if(i==0)
			max=(sub+i)->num;
		else if( (sub+i)->num>max )
			max=(sub+i)->num;
	}

	if(max==1)
		printf("NO\n");
	else{
		printf("%d\n",max);
		for(i=0;i<j;i++)
			if((sub+i)->num==max)
				puts((sub+i)->s);
	}
}
int main( )
{
int n;
char s[600];
scanf("%d",&n);
scanf("%s",s);
int i,j,k,a[600];
for(i=0;i<strlen(s)-n+1;i++)
{
a[i]=1;
for(j=i+1;j<strlen(s)-n+1;j++)
{
for(k=0;k<n;k++)
if(s[j+k]!=s[i+k])
break;
if(k==n)
a[i]++;
}
}
int m=0;
for(i=0;i<strlen(s)-n+1;i++)
if(a[i]>m)
m=a[i];
if(m<2)
printf("NO\n");
else
{
printf("%d\n",m);
for(i=0;i<strlen(s)-n+1;i++)
{
if(a[i]==m)
{
for(j=i;j<i+n;j++)
printf("%c",s[j]);
printf("\n");
}
}
}
return 0;
}
//********************************
//*???n-gram????    **
//*?????? 1300012757 **
//*???2013.12.12 **
//********************************
int n;
int num[200] = {0};

void search(char s[200][5],int j)
{
	extern int n,num[200];
	int count = 0;
	for(int i =1;i<j;i++)
		if(s[j][0] == s[i][0])
		{
			count = 1;
			for(int x = 1; x<n;x++)
			{
				if(s[j][x] != s[i][x])
					count = 0;
			}
			if( count  == 0)
				continue;
			else
			{
				num[i] ++;
				return;
			}
		}
	num[j] ++;
}

int main()
{
	extern int n,num[200];
	cin >> n;
	char s[200][5];
	char c[500];
	cin.get();
	int i =1;
	while((c[i] = cin.get())!= '\n')
		i++;
	for(int j = 1; j <=i-n+1; j++)
	{
		for(int x= 0;x<n;x++)
		{
			s[j][x] = c[j+x];
		}
		search(s,j);
	}
	int max = 0;
	for(int j = 1;j<=i-n+1;j++)
	{
		if(num[j] > max)
			max = num[j];
	}
	if(max  == 1)
		cout<<"NO"<<endl;
	else
	{
		cout<< max<<endl;
	for(int j = 1; j<i-n+1;j++)
	{
		if(num[j] == max)
			for(int x= 0;x<n;x++)
			cout<< s[j][x];
		cout<<endl;
	}

	}
	return 0;
}
int main()
{
	int n, j, k, leng;
	cin >> n;
	char str[501];
	int num[501] = {0};
	cin >> str;
	leng = strlen(str);
	int i, max = 0;
	for(i = 0; i <= leng - n; i++)
	{
		for(j = i; j <= leng - n; j++)
		{
            for(k = 0; k <= n - 1; k++)
				if(str[i + k] != str[j + k]) break;
			if(k == n)
				num[i]++;
			if(num[i] >= max)
				max = num[i];
		}
	}
	if(max <= 1)
		cout << "NO";
	else
	{
		cout << max << endl;
        for(i = 0; i <= leng - 1 - n; i++)
		    if(num[i] == max)
			{
			    for(j = 0; j <= n - 1; j++)
				{
				    cout << str[i + j];
				}
			    cout << endl;
			}
	}
	return 0;
}
int main () {
int n,m;
scanf("%d%d",&n,&m);
int sz[100];
for(int i=m;i<=n-1;i++){scanf("%d",&(sz[i]));}
for(int j=0;j<=m-1;j++){scanf("%d",&(sz[j]));}
for(int p=0;p<=n-1;p++){
	if(p==n-1){printf("%d",sz[p]);}
	else {printf("%d ",sz[p]);}
}
return 0;
}
void move(int *a,int n,int m);
void main()
{
	int n,m,a[200];
	scanf("%d %d",&n,&m);
	int i;
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	move(a,n,m);
	for(i=0;i<n-1;i++)
		printf("%d ",a[i]);
	printf("%d\n",a[n-1]);
}

void move(int *a,int n,int m)
{
	int i;
	for(i=n-1;i>=0;i--)
		a[i+m]=a[i];
	for(i=n;i<n+m;i++)
		a[i-n]=a[i];
}
int main()
{
	void change();
	int n,m,i,f[20]={0};
	
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		scanf("%d",&f[i]);

	for(i=0;i<m;i++)
		change(n,f);
    printf("%d",f[0]);
	for(i=1;i<n;i++)
		printf(" %d",f[i]);
	return 0;
}

void change(int n,int f[20])
{
	int i,k;
	k=f[n-1];
	for(i=n-1;i>0;i--)
		f[i]=f[i-1];
	f[0]=k;
}
int main()
{
	int a[300];
	int n,m,i,j;
	cin>>n>>m;
	for(i=0;i<n;i++)
		cin>>a[i];
	j=0;
	for(i=n;i<2*n-m;i++)
	{
	  	a[i]=a[j];
     	j++;
	}
	for(i=n-m;i<2*n-m-1;i++)
		cout<<a[i]<<' ';
	cout<<a[2*n-m-1];
	return 0;
}
int main()
{
	int change(int);
	int a[100],i,m,n,j,t;
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	for(j=0;j<m;j++)
	{
		t=a[n-1];
    	for(i=n-1;i>0;i--)
		a[i]=a[i-1];
    	a[0]=t;
	}
	 printf("%d",a[0]);
	for(i=1;i<n;i++)
		printf(" %d",a[i]);	
}
int main()
{
	int Z[100],n,m,i;
	int *p;
	p=Z;
	scanf("%d %d",&n,&m);
	for(i=0;i<n;i++)
	{scanf("%d",&Z[i]);}
	for(i=0;i<m;i++)
	{printf("%d ",*(p+n-m+i));}
	for(i=0;i<n-m;i++)
	{printf("%d",*(p+i));if(i<n-m-1) printf(" ");}
	return 0;
}
struct term
{
	int num;
	struct term *next;
};

struct term *creat(int n)
{
	struct term *head;
	struct term *p1,*p2;
	int i=1;
	p1=p2=(struct term *)malloc(LEN);
	scanf("%d",&p1->num);
	head=p1;
	while(i<n)
	{
		p1=(struct term *)malloc(LEN);
		scanf("%d",&p1->num);
		p2->next=p1;
		p2=p1;
		i++;
	}
	p1->next=NULL;
	return(head);
}

void main()
{
	struct term *head,*p1,*p2,*p;
	int i,n,m;
	scanf("%d %d",&n,&m);
	head=creat(n);
	p1=p2=head;
	for(i=1;i<n;i++)
	{
		p1=p2->next;
		p2=p1;
	}
	p1->next=head;
	p1=p2=head;
	for(i=1;i<n-m;i++)
	{
		p1=p2->next;
		p2=p1;
	}
	head=p1->next;
	p2->next=NULL;	
	for(p=head,i=0;i<n;i++)
	{
		if(i==0) printf("%d",p->num);
		else printf(" %d",p->num);
		p=p->next;
	}
	printf("\n");
}
int main()
{
	int a[100],b[100];
	int i,j,n,m,t,k,c;
	scanf("%d %d",&n,&m);
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	for(j=0;j<n-m;j++){
		b[j]=a[j];
	}
	for(t=0;t<m;t++){
		a[t]=a[n-m+t];
	}
	for(k=0;k<n-m;k++){
		a[m+k]=b[k];
	}
	for(c=0;c<n;c++){
		printf("%d",a[c]);
		if(c==n-1)
			break;
		else
		printf(" ");
	}
	return 0;
}
void main()
{
	void move(int num[],int m,int n);
	int num[100],m,n,i;
	scanf("%d%d",&m,&n);
	for(i=0;i<m;i++)
	{
		scanf("%d",&num[i]);
	}
	move(num,m,n);
	printf("%d",num[0]);
	for(i=1;i<m;i++)
	{
		printf(" %d",num[i]);
	}
	printf("\n");
}
void move(int num[],int m,int n)
{
	int *p,end;
	end=*(num+m-1);
	for(p=num+m-1;p>num;p--)
		*p=*(p-1);
	*num=end;
	n--;
	if(n>0)
		move(num,m,n);
}
void move(int *p,int n)
{	
	int i,temp;
	temp=*(p+n-1);
	for(i=n-2;i>=0;i--)
		*(p+i+1)=*(p+i);
	*p=temp;
}

void main()
{
	int i,n,m,*p;
	scanf("%d%d",&n,&m);
	p=(int *)malloc(n*sizeof(int));
	for(i=0;i<n;i++)
		scanf("%d",p+i);
	for(i=0;i<m;i++)
		move(p,n);
	for(i=0;i<n;i++)
	{
		printf("%d",*(p+i));
		if(i!=n-1)
			printf(" ");
		else
			printf("\n");
	}
}
/*
 * move.cpp
 * Author: ???
 * Created on: 2011-1-8
 * ?????????
 */
int main(){
	int *p = NULL,*q = NULL;//??????????
	int n,m,i;
	cin>>n>>m;//??n?m
	int a[n];
	for(i=0;i<n;i++)  cin>>a[i];//?????????
	p=a;
	q=a+n;//p?????????q??????????
	for(i=0;i<n-m;i++){
		*(q++)=*(p++);
	}//??n-m?????????
	p=a+n-m;
	for(i=0;i<n-1;i++){
		cout<<*(p++)<<" ";
	}//???n-m+1????????????
	cout<<*p<<endl;
	return 0;
}
void main()
{
	int *p,*q;
	int i,j,m,n;
	scanf("%d %d",&n,&m);
	p=(int *)malloc(n*sizeof(int));
	q=(int *)malloc(sizeof(int));
	for(i=0;i<n;i++)
		scanf("%d",(p+i));
	for(j=0;j<m;j++)
	{
		*q=*(p+n-1);
		for(i=n-1;i>0;i--)
			*(p+i)=*(p+i-1);
		/*???????????????????????????????????????*/
		*p=*q;
	}
	printf("%d",*p);
	for(i=1;i<n;i++)
		printf(" %d",*(p+i));
	printf("\n");
}
int main()
{
    int n,m,num[220],i,j;
    scanf("%d%d",&n,&m);
    j=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&num[i]);
    }
    for(i=n;i<n+n-m;i++)
    {
        num[i]=num[j];
        j=j+1;
    }

    printf("%d",num[n-m]);
    for(i=n-m+1;i<n+n-m;i++)
    {
        printf(" %d",num[i]);
    }
    return 0;
}
void main()

{
	int a[100],b[100],n,m,i;

	scanf("%d %d",&n,&m);
	for(i=0;i<n;i++)
	    scanf("%d",&a[i]);
	for(i=0;i<n-m;i++)
		b[m+i]=a[i];
	for(i=0;i<m;i++)
		b[i]=a[n-m+i];
	for(i=0;i<n-1;i++)
		printf("%d ",b[i]);
	printf("%d",b[n-1]);
}
void main ()
{
	int  a[100],m,n;
	scanf("%d %d",&n,&m);
	int i;
	for (i=0;i<n;i++)
		scanf("%d",&a[i]);
	int *p[100];
	for (i=0;i<n-m;i++)
		p[i+m]=&a[i];
	for (i=n-m;i<n;i++)
		p[i-n+m]=&a[i];
	for (i=0;i<n-1;i++)
		printf("%d ",*p[i]);
	printf("%d\n",*p[n-1]);
}
int main()
{
	int a[100];
	int n,m,i;
	cin>>n>>m;
	for(i=m;i<n;i=i+1)
		cin>>a[i];
	for(i=0;i<m;i++)
		cin>>a[i];
	for(i=0;i<n-1;i++)
		cout<<a[i]<<" ";
	cout<<a[n-1];
	return 0;
}
int main() {
	int sz[100],n,m;
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++){
		scanf("%d",&sz[i]);
	}
	int e;
	for(int k=n-m;k<n;k++){
		for(int j=k;j>k-n+m;j--){
			e=sz[j];
			sz[j]=sz[j-1];
			sz[j-1]=e;
		}
	}
	for(int c=0;c<n-1;c++){
		printf("%d ",sz[c]);
	}
	printf("%d",sz[n-1]);
	return 0;
}
int main()
{
	int n,m,i,g[100];
	int *p;
	cin>>n>>m;
	for(i=0;i<n;i++)
		cin>>g[i];
	for(p=&g[n-1]-m+1;p<=&g[n-1];p++)
		cout<<*p<<" ";
	for(p=&g[0];p<&g[n-1]-m;p++)
		cout<<*p<<" ";
         cout<<*p;
	return 0;
}