semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
    char a[leng1],b[leng1][leng1];
    int count[leng1]={0};
    int leng=0;
    int i,j,k;
    cin>>k;
    cin.get();
    cin.getline(a,leng1,'\n');
    char *p=a;
    while(*p!='\0')
    {leng++;p++;}
    for(i=0;i<=leng-k;i++)
       strncpy(b[i],a+i,k);
    for(i=0;i<=leng-k;i++)
       for(j=i;j<=leng-k;j++)
       if(strcmp(b[i],b[j])==0)
         count[i]++;
    int max=0;
    for(i=0;i<=leng-k;i++)
       if(count[i]>max)max=count[i];
    if(max<=1){cout<<"NO";return 0;}
    cout<<max<<endl;
    for(i=0;i<=leng-k;i++)
       if(count[i]==max)cout<<b[i]<<endl;
    cin.get();
    return 0;
}
struct abb{
	char c[6];
	int  num;
};


int main()
{
	int n,i,j,len,q;
	char s[600];

	struct abb acc[300];
	struct abb add;

    scanf("%d",&n);

	scanf("%s",s);

	len=strlen(s);

	for(i=0;i<=len-n;i++)
	{
		q=0;
		for(j=i;j<i+n;j++)
		{
			acc[i].c[q]=s[j];
			q++;
		}
		acc[i].c[q]='\0';
		acc[i].num=1;
		
	}


	for(i=0;i<=len-n;i++)
		for(j=i+1;j<=len-n;j++)
			if(strcmp(acc[i].c,acc[j].c)==0)
				acc[i].num++;


   for(i=1;i<=len-n;i++)
	   for(j=0;j<=len-n-1;j++)
		   if(acc[j].num<acc[j+1].num)
		   {
			   add=acc[j];
			   acc[j]=acc[j+1];
			   acc[j+1]=add;
		   }

   i=0;
   if(acc[i].num!=1){
   printf("%d\n",acc[i].num);
   printf("%s\n",acc[i].c);

   while(acc[i+1].num==acc[i].num)
   { printf("%s\n",acc[i+1].c);
   i++;}
   }

   else
	   printf("NO");
   return 0;
}
int main(){
	char a[505],b[505][6];
	int n,i,j,k,l;
	scanf("%d",&n);
	scanf("%s",a);
	for(i=0;i<=strlen(a)-n;i++){
		for(j=0;j<n;j++){
			b[i][j]=a[i+j];
		}
		b[i][n]=0;
	}
	l=1;
	for(i=0;i<=strlen(a)-n;i++){
		k=0;
		for(j=0;j<=strlen(a)-n;j++){
			if(strcmp(b[i],b[j])==0) k++;
		}
		if(k>l) l=k;
	}
	if(l==1) printf("NO");
	else{
		printf("%d\n",l);
		for(i=0;i<=strlen(a)-n;i++){
			k=0;
			for(j=i;j<=strlen(a)-n;j++){
				if(strcmp(b[i],b[j])==0) k++;
			}
			if(k==l){
				printf("%s\n",b[i]);
		}
		}
	}
	scanf("%d",&n);
	return 0;
}
int n,c[500]={0};
char d[5]={'\0'};
void main()
{
	void gram(char s[500],int i);
	int i,j,k,t=0,max=0;
	char s[500]={'\0'};
	scanf("%d",&n);
	scanf("%s",s);
	for(i=0;i<strlen(s)-n+1;i++)
	{
		gram(s,i);
		for(j=i;j<strlen(s)-n+1;j++)
		{
			k=0;
			while((d[k]==s[j+k])&&k<n)
			{
				k=k+1;
				t=t+1;
			}
			if(t==n)
			{
				c[i]=c[i]+1;
				t=0;
			}
			else
				t=0;
		}
		for(k=0;k<5;k++)
		{
			d[k]='\0';
		}
	}
	for(i=0;i<strlen(s);i++)
	{
		if(c[i]>max)max=c[i];
	}
	for(i=0;i<strlen(s);i++)
	{
		if(max==c[i])
		{
			if(max>1)printf("%d\n",max);
			else
				printf("NO");
			break;
		}
	}
	for(i=0;i<strlen(s);i++)
	{
		if((max==c[i])&&(max>1))
		{
			for(k=0;k<n;k++)
			{
				printf("%c",s[i+k]);
			}
			printf("\n");
		}
	}
}
void gram(char s[],int i)
{
	int a,b;
	b=i;
	for(a=0;a<n;a++)
	{
		d[a]=s[b];
		b=b+1;
	}
}
void main()
{
	char a[500][5],x[500];
	int i,n,len,j,num[500],maxn=0,y=0;
	scanf("%d%s",&n,x);
	len=strlen(x);
	for(i=0;i<=len-n;i++)//????????0~len-n,????a[0~len-n][]?????//
	{
		for(j=0;j<n;j++)
		{
			a[i][j]=x[i+j];
		}
		a[i][n]='\0';
	}
	for(i=0;i<=len-n;i++)
	{
		num[i]=1;
		for(j=i+1;j<=len-n;j++)
		{
			if(strcmp(a[i],a[j])==0)
				num[i]++;
		}
	}
	for(i=0;i<=len-n;i++)
	{
		if(num[i]>maxn)
			maxn=num[i];
	}
	if(maxn==1)
		printf("NO\n");
	else
	{
		printf("%d\n",maxn);
		for(i=0;i<=len-n;i++)
		{
			if(num[i]==maxn)
				printf("%s\n",a[i]);
		}
	}
}
int main()
{
	int n,i,j,k,times,a[500],max=1;
	char c[600],temp[10];
	cin>>n>>c;
	times=strlen(c)-n+1;
	for(i=0;i<times;i++)
	{
		for(j=0;j<n;j++)
			temp[j]=c[j+i];
		temp[j]=0;
		a[i]=1;
		for(j=i+1;c[j]!=0;j++)
		{
			int b=1;
			for(k=0;k<n;k++)
				if(temp[k]!=c[j+k])
					b=0;
			if(b==1)
				a[i]++;
		}
		if(a[i]>max)
			max=a[i];
	}
	if(max==1)
	{
		cout<<"NO"<<endl;
		return 0;
	}
	cout<<max<<endl;
	for(i=0;i<times;i++)
		if(a[i]==max)
		{
			for(j=i;j<i+n;j++)
				cout<<c[j];
			cout<<endl;
		}
	return 0;
}
int main()
{
	int n, i, j, k, l, a[600];
	char s[600];
	scanf("%d", &n);
	getchar();
	scanf("%s", &s);
	l = strlen(s);
	if (l < n)
	{
		printf("NO\n");
		return 0;
	}
	for (i = 0; i < l; i++)
		a[i] = 1;
	for (i = 0; i < l - n + 1; i++)
	{
		for (j = i + 1; j < l - n + 1; j++)
		{
			int flag = 1;
			for (k = 0; k < n; k++)
			{
				if (s[i + k] != s[j + k])
				{
					flag = 0;
					break;
				}
			}
			if (flag == 1)
				a[i]++;
		}
	}
	int max = 0;
	for (i = 0; i < l; i++)
	{
		if (a[i] > max)
			max = a[i];
	}
	if (max == 1)
	{
		printf("NO\n");
		return 0;
	}
	else
		printf("%d\n", max);
	for (i = 0; i < l; i++)
	{
		if (a[i] == max)
		{
			for (j = i; j < i + n; j++)
				printf("%c", s[j]);
			putchar('\n');
		}
	}
	return 0;
}
void main()
{
	int len,n,i,j,k,f,m,max,t,q[502]={0};
	char a[502]={'\0'},c[502][7]={'\0'};
	scanf("%d%s",&n,a);
	len=strlen(a);
	len=len-n+1;
	for(k=0;k<len;k++)
	{
		for(i=0;i<n;i++)
		c[k][i]=a[i+k];
	}
	max=1;
	for(k=0;k<len;k++)
	{
		for(t=k;t<len;t++)
		{
			if(strcmp(c[k],c[t])==0)
				q[k]=q[k]+1;
		}
		if(q[k]>max)
			max=q[k];
	}
	if(max==1)
		printf("NO");
	else
	{
		printf("%d\n",max);
	    for(i=0;i<len;i++)
		{
		    if(q[i]==max)
			{
		     	printf("%s\n",c[i]);
			}
		}
	}
}
void main()
{
int i,j,n,k=1,num[500];char text[501],s[500][6];
scanf("%d\n",&n);gets(text);
for(i=0;i<strlen(text)+1-n;i++)  
{num[i]=1;for(j=0;j<n;j++)   s[i][j]=text[i+j];s[i][n]='\0';}
for(i=0;i<strlen(text)+1-n;i++)  
{ for(j=i+1;j<strlen(text)+1-n;j++)   
   if(strcmp(s[i],s[j])==0)  {num[i]++;num[j]--;}}
for(i=0;i<strlen(text)+1-n;i++)  if(num[i]>k)  k=num[i];
if(k==1)    printf("NO");
else
{printf("%d\n",k);
for(i=0;i<strlen(text)-n;i++) {if(num[i]==k)  printf("%s\n",s[i]);}}
}
//********************************
//*???n-gram????      **
//*?????? 1300012887 **
//*???2013.12.11 **
//********************************
int main()
{
	char str[502] = {0} , a[500][5]={0}, b[100][5] = {0}, *p = NULL;
	int n, l, i, j, cnt = 0, max = 0, k = 1, q;
	cin >> n;  //??????
	cin >> str;  //?????
	l = strlen(str);  //????????
	p = str;  //??????
    for (i = 0; i < l-n+1 ; i++)  //??????????????n???????
	{
        for (j = 0; j < n; j++)
		{
			a[i][j] = *p;
			p++;
		}
		p = p +1 - n;
	}
	for (i = 0; i < l-n+1; i++)  //????????
	{
		cnt = 0;  //???????
		for(j = i; j < l-n+1; j++)
		{		
            if (strcmp(a[i],a[j]) == 0)  //????
			     cnt++;
		}
		if (cnt > max)  //?????????
		{
			k = 0;  //???????????????????
			max = cnt;
			strcpy (b[k],a[i]);
		}
		if (cnt == max)  //?????????
		{
			for (q = 0; q <= k; q++)  //????????????????????
			{
				if (strcmp(b[q],a[i]) == 0)
					break;
			}
			if(q == k+1)  //????
			{
			    k++;  //????
			    strcpy (b[k], a[i]);
			}
		}
	}
	if (max == 1)
		cout << "NO" << endl;
	else
	{
	    cout << max << endl;  //??
	    for (i = 0; i <= k; i++)
	        cout << b[i] << endl;
	}
	return 0;
}
int panduan(char str3[],char str4[],int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		if(str3[i]!=str4[i])
			return 0;
	}
	return 1;
}//????????????????????1????0
int main()
{
	int N,l,i,j,max=0;
	char str[500];
	char str2[500][500];
	int a[500];
	for(i=0;i<500;i++)
		a[i]=1;
	cin>>N;
	cin>>str;
	l=strlen(str);
	for(i=0;i<=l-N;i++)
	{
		for(j=0;j<N;j++)
		{
			str2[i][j]=str[i+j];
		}
		str2[i][N]='\0';
		
	}//?????N?????
	for(i=l-N-1;i>=0;i--)
		for(j=l-N;j>i;j--)
			a[i]=a[i]+panduan(str2[i],str2[j],N);//???????
	for(i=0;i<=l-N;i++)
	{
		if(a[i]>=max)
			max=a[i];
	}//?????
	if(max==1)
		cout<<"NO";//????????1????????????
	else
	{
		cout<<max<<endl;
	    for(i=0;i<=l-N;i++)
		{
			if(a[i]==max)
				cout<<str2[i]<<endl;
		}
	}//?????????????
	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(void)
{
	int N;scanf("%d",&N);
	getchar();
	char str[550];
	gets(str);
	int strl=strlen(str);
	char strm[550][10];
	int strn[550]={0};
	for(int i=0;i<=strl-N;i++)
	{
		for(int j=0;j<N;j++)
		{
			strm[i][j]=str[i+j];
		}
		strm[i][N]='\0';
	}
	int max=0;
	for(int i=0;i<=strl-N;i++)
	{
		for(int j=i;j<=strl-N;j++)
		{
			if(strcmp(strm[i],strm[j])==0) strn[i]++;
		}
		if(max<strn[i]) max=strn[i];
	}
	if(max==1)
	{
		printf("NO");return 0;
	}
	printf("%d\n",max);
	for(int i=0;i<=strl-N;i++) if(max==strn[i]) puts(strm[i]);
	return 0;
}
int main()
{
    int m,n,i,j;
    char a[500],b[500][5];
    int c[500];
    scanf("%d",&n);
    scanf("%s",a);
    for(i=0;a[i+n-1];i++)
    {m=i+n-1;
     for(j=0;j<n;j++)
      b[i][j]=a[i+j];}
    for(i=0;i<m-n+2;i++)
    {c[i]=0; 
     for(j=i+1;j<m-n+2;j++)
     {int t=0,k;
      for(k=0;k<n;k++)
      {if(b[i][k]==b[j][k]) t++;}
      if(t==n) 
       c[i]=c[i]+1;}
    }
    int max=0;
    for(i=0;i<m-n+2;i++)
    {if(max<=c[i]) max=c[i];}
    if(max>0)
    {
    printf("%d\n",max+1);
    for(i=0;i<m-n+2;i++)
    {if(max==c[i])
     {for(j=0;j<n;j++)
       printf("%c",b[i][j]);
      printf("\n");}}
      }
      else printf("NO");
    
    return 0;
}
int main()
{
	int n,i,j;
	char s[501]={'0'};
	char a[501][6]={{0,0,0,0,0,0}};
	scanf("%d",&n);
	scanf("%s",s);
	int l;
	l=strlen(s)-n+1;
	int p=0,m;
	for(i=0;i<l;i++)
	{
      	m=p;
		for(j=0;j<n;j++)
		{
		
		      a[i][j]=s[m];
			  m++;
		}
		p=p+1;
	}

	int count[501]={0};
	p=0;
	for(i=0;i<l;i++)
	{
		for(j=i+1;j<l;j++)
		{
			if(strcmp(a[i],a[j])==0)
			{
				count[p]=count[p]+1;
			}
		}
		p=p+1;
	}
	for(i=0;i<l;i++)
	{
		count[i]=count[i]+1;
	}
	int max=1;
	for(i=0;i<l;i++)
	{
         if(count[i]>max)
			 max=count[i];
	}
    if(max==1)
	{
			printf("NO\n");
			return 0;
	}
	else
	{
		printf("%d\n",max);
	}
	for(i=0;i<l;i++)
	{	
	    if(count[i]==max && max!=1)
		{
			for(j=0;j<n;j++)
				printf("%c",a[i][j]);
			printf("\n");
		}
	}
	return 0;
}
int main()
{
	char a[500],b[5];
	int n,i,j,k,p,q,l,m,max,c[500];
	cin>>n;
	cin>>a;
	for(i=0;i<500;i++) c[i]=0;
	l=strlen(a);
	for(i=0;i<l-n+1;i++)
	{
		for(j=0;j<n;j++)
		b[j]=a[j+i];
		for(k=i;k<l-n+1;k++)
		{
			m=0;
			for(j=0;j<n;j++)
			{
				if(b[j]!=a[k+j]) m++;
			}
			if(m==0) c[i]++;
		}
	}
	max=c[0];
	for(i=0;i<l-n+1;i++)
	if(c[i]>max)
	max=c[i];
	if(max!=1) cout<<max<<endl;
	for(i=0;i<l-n+1;i++)
	{
		if(c[i]==max)
		{
			if(max==1) {cout<<"NO";break;}
		for(j=0;j<n;j++)
		cout<<a[i+j];
		cout<<endl;
		}
	}
	return 0;
}
int main(){
	int n;
	scanf("%d",&n);
	char str[Maxlength+2];
	scanf("%s",str);
	int len=strlen(str);
	int number[len-n+1];
	//printf("1.0");
	for(int i=0;i<len-n+1;i++){
		number[i]=1;
		int t=1;
		//printf("1.1");
		while(t<=(len-n-i)){
			//printf("1.2");
			for(int j=0;j<n;j++){
				//printf("1.3");
				if(*(str+i+j)!=*(str+i+j+t)){
					t++;
					//printf("1.4");
					break;
				}
				else if(j==(n-1)&&*(str+i+j)==*(str+i+j+t)){
					//printf("1.5\n");
					//printf("%s %s",(str+i),(str+i+t));
					t++;
					number[i]++;
					
				}
			}
		}
	}
	
	int maxtimes=1;
	for(int j=1;j<=(len-n+1);j++){
		if(maxtimes!=1){
			//printf("3");
			break;
		}
		for(int i=0;i<len-n+1;i++){
			if(j<number[i]){
				//printf("2");
				break;
			}
			if(i==len-n){
				for(int k=0;k<len-n+1;k++){
					if(j==number[k]){
						maxtimes=j;
						break;
					}
				}
			}
		}
	}
	
	if(maxtimes==1){
		printf("NO\n");
	}
	else{
		printf("%d\n",maxtimes);
		for(int i=0;i<len-n+1;i++){
			if(maxtimes==number[i]){
				for(int j=0;j<n;j++){
					printf("%c",*(str+i+j));
				}
				printf("\n");
			}
		}
	}
	return 1;
}
int main()
{
    char s[501]={""},s1[501][501]={""};
	int n,i,j,a[501]={0},max=0;
     scanf("%d\n",&n);
     gets(s);
//printf("%d\n",a[0]);
	 for(i=0;i<=strlen(s)-n;i++)
		 for(j=0;j<n;j++)
			 *(*(s1+i)+j)=*(s+i+j);
		   // printf("%c\n",s1[0][0]);
   // puts(s1[2]);
     for(i=0;i<=strlen(s)-n;i++)
		 for(j=i;j<=strlen(s)-n;j++)
			 if(strcmp(*(s1+i),*(s1+j))==0&&*(s1+i)!=' ') {*(a+i)=*(a+i)+1;*(s+j)=' ';}
     //  puts(s1[2]);
	  
    for(i=0;i<=strlen(s)-n;i++)
		if(max<*(a+i)) max=*(a+i);
	if(max==1) printf("NO\n");
	else
	{
   printf("%d\n",max);
  // printf("%c\n",s1[0][0]);
   //	printf("%d %d\n",max,a[0]);
	for(i=0;i<=strlen(s)-n;i++)
		if(*(a+i)==max) printf("%s\n",*(s1+i));

	}
}
main()
{
     int n,len,a[500],i0=0;
     scanf("%d",&n);
     for(int i=0;i<500;i++) a[i]=0;
     char s[500],s1[500],s2[500];
     scanf("%s",s);
     len=strlen(s);
     for(int i=0;i<=len-n;i++)
     {
          for(int j=0;j<n;j++) s1[j]=s[i+j];
          s1[n]='\0';
          for(int j=i;j<=len-n;j++)
          {
               for(int k=0;k<n;k++) s2[k]=s[j+k];
               s2[n]='\0';
               /*printf("%s %s\n",s1,s2);*/
               if(strcmp(s1,s2)==0) a[i]++;        
          }        
     }
     /*for(int i=0;i<=len-n;i++) printf("%d\n",a[i]);*/
     for(int i=0;i<=len-n;i++)
     {
          if(a[i]>a[i0]) i0=i;    
     }
     if(a[i0]==1) printf("NO");
     else 
     {    printf("%d\n",a[i0]);
          for(int i=0;i<=len-n;i++)
          {
               if(a[i]==a[i0])
               {
                    for(int j=0;j<n;j++)
                    {
                         if(j<n-1) printf("%c",s[i+j]);
                         else printf("%c\n",s[i+j]);       
                    }               
               }        
          }
     }
          
}
int main(){
    char a[600],b[600][6]={0};
    int n,i,j,k,l,o,p,count[600]={0},max;
    scanf("%d",&n);
    scanf("%s",a);
    l=strlen(a);
    
    for(k=0;k<=l-n;k++){
        o=0;
        for(i=k;i<k+n;i++){
            b[k][o++]=a[i];
            }
        
         //printf("%s\n",b[k]);
         
        }
    //printf("%d",k);
    for(i=0;i<k;i++){
        for(j=i+1;j<=k;j++){
            if(strcmp(b[i],b[j])==0){
                
                count[i]++; 
                //printf("%d\n",count[i]) ;              
                }
            }
        }
    max=count[i]+1;
    for(i=0;i<=l-n;i++){
        if(count[i]>max-1){
            max=count[i]+1;            
            }
        }
    if(max==1) printf("NO");
    else{
        printf("%d\n",max);
        for(i=0;i<=l-n;i++){
            if(max==count[i]+1)  printf("%s\n",b[i]);            
            }
        }
    scanf("%d",&i);
    return 0;
    }
int main()
{
	int n,c[500]={0},max=0,i,j;
scanf("%d\n",&n);
char a[510];
gets(a);
int la=strlen(a);
char b[500][5];
for(i=0;i<=la-n;i++)
{
	for(j=0;j<n;j++)
	{
		b[i][j]=a[i+j];
	}
	b[i][n]='\0';
}
for(i=0;i<=la-n;i++)
{
for(j=i;j<=la-n;j++)
{
	if(strcmp(b[i],b[j])==0)
		c[i]++;
}
if(c[i]>max)
max=c[i];
}
if(max==1)
printf("NO");
else
{
printf("%d\n",max);
for(i=0;i<=la-n;i++)
{
	if(c[i]==max)
		puts(b[i]);

}

}
return 0;
}
int main(int argc, char* argv[])
{
	int i,j,l,n,c[1000]={0},m=0;
	char a[1000],b[1000][5];
	scanf("%d%s",&n,a);
	l=strlen(a);
	memset(b,0,sizeof(b));
    for(i=0;i<l-n+1;++i)
        strncpy(b[i],a+i,n);
	for(i=0;i<l-n+1;++i)
		for(j=i+1;j<l-n+1;++j)
            if(strcmp(b[i],b[j])==0)
			{
				++c[i];
                if(c[i]>m)
					m=c[i];
			}
    if(m==0)
		printf("NO\n");
	else
	{
		printf("%d\n",m+1);
		for(i=0;i<l-n+1;++i)
			if(c[i]==m)
				printf("%s\n",b[i]);
	}
	return 0;
}
int main()
{
	int n,i,j,k[505]={0},m,p=0;
	char a[505],b[505][7],c[505][7];
	scanf("%d\n%s",&n,a);
	for(i=0;a[i+n-1]!='\0';i++)
	{
		for(j=0;j<n;j++)
			b[i][j]=a[i+j];
		b[i][n]='\0';
	
	}
	m=strlen(a)-n+1;
	for(i=0;i<m;i++)
	{
		if(strcmp(b[i],"\0")!=0)
		{
			strcpy(c[p],b[i]);
			p++;
		}
		for(j=i+1;j<m;j++)
		{
			if(strcmp(c[p-1],b[j])==0)
			{
				k[p-1]++;
				strcpy(b[j],"\0");

			}
		}
	}
	int max=0;
	for(i=0;i<p;i++)
	{
		if(k[i]>max)
		{
			max=k[i];
		}
	}
	if(max+1==1)
	{printf("NO");return 0;}
	else
		printf("%d\n",max+1);
	for(i=0;i<p;i++)
	{
		if(k[i]==max)
			printf("%s\n",c[i]);
	}
	return 0;

	
}
int main()
{
    int n,l;
    char a[1000];
    scanf("%d",&n);
    getchar();
    gets(a);
    l=strlen(a);
    int b[1000]={0},i,j,s;
    for(i=0;i<=l-n;i++)
    {
        for(j=i;j<=l-n;j++)
        {
            for(s=0;s<n;s++)
            {
                if(a[i+s]!=a[j+s])
                {
                    s=0;
                    break;
                }
            }
            if(s==n)
            b[i]=b[i]+1;
        }
    }
    int max=0;
    for(i=0;i<=l-n;i++)
    {
        if(b[i]>max)
        max=b[i];
    }
    if(max==1)
    {
        printf("NO");
        return 0;
    }
    printf("%d\n",max);
    for(i=0;i<=l-n;i++)
    {
        if(b[i]==max)
        {
            for(j=i;j<i+n;j++)
            {
                printf("%c",a[j]);
            }
        putchar('\n');
        }
    }
    return 0;
}
main()
{
	int n ;
	scanf ("%d",&n);
	char str[510],a[510][6];
	scanf("%s",str);
	for (int i=0;i<= (strlen(str)-n);i++)
		for(int m =i;m <=i+n-1 ;m++) 
			a[i][m-i]=str[m];
	int b[510];
	for (int e=0;e<=(strlen(str)-n);e++)
	{
		int l=0;
		for (int j=e;j<=(strlen(str)-n);j++)
		{
			if (strcmp(a[e],a[j])==0)
			l++;
			else
			l=l;
		}
		b[e]=l;
		
	}
	
	int lmax=b[0];
	for (int c=1;c<=(strlen(str)-n);c++)
		{
			if(b[c]>lmax)
			lmax=b[c];
			else lmax=lmax;
		}
	
	if(lmax==1)
	printf("NO");
	else
	{
		printf ("%d\n",lmax);
	for (int d=0;d <=(strlen(str)-n);d++)
		{
			if (b[d]==lmax)
			printf ("%s\n",a[d]);
		}
	}
}
int main()
{
	char a[510]={0},b[500][6]={0};
	int l,i,j,n,m=0,c[500]={0},s;
	scanf("%d\n",&n);
	gets(a);
	l=strlen(a);
	for(i=0;i<=l-n;i++)
		for(j=0;j<n;j++)
			b[i][j]=a[i+j];
	for(i=0;i<=l-n;i++)
		{s=1;
	    for(j=0;j<i;j++)
			if(c[j]!=-1)if(strcmp(b[j],b[i])==0){s=0;c[j]+=1;c[i]=-1;break;}
		if(s)c[i]+=1;}
	for(i=0;i<=l-n;i++)
		if(c[i]>m)m=c[i];
	if(m==1)printf("NO");
	else {printf("%d\n",m);
	     for(i=0;i<=l-n;i++)
		if(c[i]==m)puts(b[i]);}

	
}
int main()
{
	int n,j,len,cnt=0,max=0;
	cin>>n;
	char s[505];
	cin>>s;
	len=strlen(s);
	char *p,*q,*a;
	for(p=s;p<=s+len-n;p++)//??????????????
	{
		cnt=1;//???
		for(q=p+1;q<=s+len-n;q++)//?????????????
		{
			for(j=0;j<n;j++)
			{
				if(*(p+j)!=*(q+j))
					break;
			}
			if(j==n)
				cnt=cnt+1;
		}
		if(cnt>max)	
			max=cnt;					
	}
	if(max==1)
		cout<<"NO";
	else
	{
		cout<<max<<endl;
		for(p=s;p<=s+len-n;p++)//?????????????
		{
			cnt=1;
			for(q=p+1;q<=s+len-n;q++)//??????
			{
				for(j=0;j<n;j++)
			{
				if(*(p+j)!=*(q+j))
					break;
			}
			if(j==n)
				cnt=cnt+1;
			}			
			if(cnt==max)
			{
				a=p;
				for(j=0;j<n;j++)
					cout<<*(a+j);
				cout<<endl;
			}
		}
	}
		
		return 0;
}
int main()
{int n;
 char a[500],b[250][5],c[5];
 scanf("%d %s",&n,a);
 int i,j,r,k[250],t,p=0;
 r=strlen(a);
 for(i=0;i<=r-n;i++)
 {for(j=0;j<=n-1;j++)
   {c[j]=a[j+i];}
   c[n]=0;
  for(t=0;;t++)
  {if(strcmp(c,b[t])==0) {k[t]++;break;}
   else if(t==p) {strcpy(b[t],c);k[t]=1;p++;break;}
  }
 }
int o=0;
for(i=0;i<=p-1;i++)
{if(k[i]>k[o]) o=i;}
if(k[o]==1) printf("NO");
else{
printf("%d\n",k[o]);
for(i=0;i<=p-1;i++)
if(k[i]==k[o]) puts(b[i]);
} 
  }
int main()
{
    char str[1001],s[1001][1001];
    int n,i,j,k=0,m,a[1001]={0},t=0,p;
    scanf("%d",&n);
    scanf("%s",str);
    m=strlen(str)-n;
    for(i=0;i<=m;i++)
        for(j=0;j<n;j++)
            s[i][j]=str[i+j];
    for(i=0;i<=m;i++)
        for(j=i;j<=m;j++)
            if(strcmp(s[j],s[i])==0) a[i]++;
    for(i=0;i<=m;i++)
        if(a[i]>t) t=a[i];
    p=0;
    for(i=0;i<m;i++)
       for(j=0;j<m;j++)
          if(a[i]!=a[j]) {p=1;break;}
    if(p==0) printf("NO\n");
    else{
    printf("%d\n",t);
    for(i=0;i<=m;i++)
    {
        if(a[i]==t)
        {
            for(j=0;j<i;j++)
                if(strcmp(s[i],s[j])==0) k=1;
            if(k==0) printf("%s\n",s[i]);
        }
    }}
}
char a[505],b[505][10];
int n;
void zi(char a[])
{
	int i,j,m;
	m=strlen(a);
	for(i=0;i<=m-n;i++)
	for(j=0;j<n;j++)
	b[i][j]=a[i+j];
}
main()
{
	scanf("%d",&n);
	scanf("%s",a);
	zi(a);
	int m,c[505]={0},i,j,max;
    m=strlen(a);
    for(i=0;i<m;i++)
    for(j=0;j<i;j++)
    if(strcmp(b[i],b[j])==0)
    c[j]++;
    max=c[0];
    for(i=0;i<=m-n;i++)
    if(c[i]>max)
    max=c[i];
    if(max==0)
    printf("NO\n");
    else
    {
        printf("%d\n",max+1);
        for(i=0;i<=m-n;i++)
        if(c[i]==max)
        printf("%s\n",b[i]);
    }

}
main()
{
       char a[501];
       int b[501];
       int k,n,i,j,t,s,c;
       scanf("%d",&k);
       scanf("%s",a);
       n=strlen(a);
       for (i=0;i<n-k;i++)
       {
           b[i]=1;
           for (j=i+1;j<=n-k;j++)
           {
               if (a[j]==a[i])
               {
                   s=0;
                   for(t=1;t<k;t++)
                   {
                        if (a[j+t]!=a[i+t])
                        s=1;
                   }
                   if(s==0) b[i]+=1;
               }
           }
       }
       c=b[0];
       for(i=1;i<n-k;i++)
       {
           if (b[i]>c) c=b[i];
       }
       if (c==1) printf("NO");
       else
       {
           printf("%d\n",c);
           for (i=0;i<=n-k;i++)
           {
               if (b[i]==c)
               {
                   for (j=0;j<k;j++)
                   printf("%c",a[i+j]);
                   printf("\n");
               }
           }
       }
}
struct zimu
{
       char a[6];
       int b;
};
int main()
{
    struct zimu r[501];
    struct zimu temp;
    char s[501]={'\0'};
    int n,k,i,j,p;
    scanf("%d",&n);
    getchar();
    gets(s);
    k=strlen(s);
    for(i=0;i<k+n-1;i++)
    {
                        for(j=0;j<6;j++)
                        {
                           r[i].a[j]=0;
                        }
                        r[i].b=0;
    }
    for(i=0;i<k-n+1;i++)
    {
                        for(p=0,j=i;j<i+n;j++,p++)
                        {
                                          r[i].a[p]=s[j];
                        }
    }
    for(i=0;i<k-n+1;i++)
    {
                        for(j=i;j<k-n+1;j++)
                        {
                                            if(strcmp(r[j].a,r[i].a)==0)
                                            {
                                                                        r[i].b=r[i].b+1;
                                            }
                        }
    }
    for(i=1;i<k-n+1;i++)
    {
                        for(j=0;j<k-n+1-i;j++)
                        {
                                              if(r[j].b<r[j+1].b)
                                              {
                                                               temp=r[j];
                                                               r[j]=r[j+1];
                                                               r[j+1]=temp;
                                              }
                        }
    }
    if(r[0].b>1)
    {
    printf("%d\n",r[0].b);
    for(i=0;i<k+n-1;i++)
    {
                        if(r[i].b==r[0].b)
                        {
                                          printf("%s\n",r[i].a);
                        }
    }
    }
    else
    printf("NO");
   
  
    return 0;
}
int main()
{
    int n,l,t=0,c[500]={0},max=0,z=0;
    char a[1000],b[500][6];
    scanf("%d",&n);
    scanf("%s",a);
    l=strlen(a);
    for(int i=0;i<l;i++)
    {
    for(int j=i;j-i<n;j++)
    {
            b[i][j-i]=a[j];
    }
    }
    for(int i=0;i<l;i++)
    {
    for(int j=0;j+i<l;j++)
    {
            for(int k=0;k<n;k++)
            {
            if(b[i][k]==b[i+j][k]) t++;
            if(t==n) c[i]++;
            }
			t=0;
    } 
    }
    for(int i=0;i<l;i++) if(c[i]>max) max=c[i];
    if(max==0||max==1) 
	{
		printf("NO");
		goto end;
	}
	else printf("%d\n",max);
        for(int i=0;i<l;i++)
    {
            if(max==c[i])
            for(int j=0;j<n;j++)
            {
            printf("%c",b[i][j]);
            }
            printf("\n");
    }
end:    return 0;
}