semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
    int n,i,j,k,sum=0,b[1000],max=0,maxi=0;
	char a[1000];
	scanf("%d",&n);
	scanf("%s",a);
	for(i=0;i<1000;i++)
		b[i]=0;
	for(i=0;i<strlen(a);i++)
	{
		for(j=i+1;j<strlen(a);j++)
		{
			if(a[i]==a[j])
			{
				for(k=1;k<n;k++)
				{
					if(a[i+k]==a[j+k])
						sum++;
				}
				if(sum==n-1)
				{
					b[i]++;
				}
			}
			sum=0;
		}
	}
	max=0;
	for(i=0;i<strlen(a);i++)
	{
		if(b[i]>=max)
		{
			max=b[i];
		}
	}
	if(max!=0){
	printf("%d\n",max+1);
	for(i=0;i<strlen(a);i++)
	{
		if(b[i]==max)
		{
			for(j=0;j<n;j++)
			{
		        printf("%c",a[i+j]);
			}
			printf("\n");
		}
	}}
	else
	{
        printf("NO");
    }
	
	return 0;
}
//********************************
//*???n-gram????   **
//*?????? 1300012855 **
//*???2013.12.11  **
//********************************


int main(void)
{
	int glen; // ????
	cin >> glen;
	char ar[505];
	cin >> ar;
	int slen; // ????
	slen = strlen(ar);
	struct substr // ??????????(????????)
	{
		int position; // ????
	}maxstr[100];
	int maxnum = 1, // ????????
		cmppo = 0, // ?????????
		crtpo = 0, // ?????????????
		maxtype = 0, // ?????????
		strnum = 0; // ???????
	while(cmppo <= slen - glen) // ??????????????????
	{
		strnum = 0; // ???????0
		crtpo = cmppo; // ?cmppo??????
		while(crtpo <= slen - glen)
		{
			for(int i = 0; i < glen; i++)
			{
				if(!(*(ar+crtpo+i)== *(ar+cmppo+i))) // ????????????
					break;
				if(i == glen-1) // ????????????strnum+
				{
					strnum++;
				}
			}
			crtpo++; // ???????
		}
		if(strnum > maxnum) // ??????????
		{
			maxtype = 1; // ????1
			maxstr[maxtype].position = cmppo; // ????
			maxnum = strnum; // ????
		}
		else if(strnum == maxnum) // ??????????????
		{
			maxtype++; // ????1
			maxstr[maxtype].position = cmppo; // ????
		}
		cmppo++; // ???????
	}
	if(maxnum == 1) // ??????????1????no
	{
		cout << "NO" << endl;
	}
	else
	{
		cout << maxnum << endl; // ?????????
		for(int j = 1; j <= maxtype; j++) // ????????
		{
			for(int i = 0; i < glen; i++)
				cout << *(ar + maxstr[j].position + i);
			cout << endl;
		}
	}
	return 0;
}
int main()
{
	char s[500]={""},s1[500][6]={""};
	int n,x[500]={0},i,j,length,max;
	scanf("%d",&n);
	getchar();
	gets(s);
	length=strlen(s);
	for(i=0;i<=length-n;i++)
	{
		for(j=0;j<n;j++)
		{
			s1[i][j]=s[i+j];
		}
	}
	for(i=0;i<=length-n;i++)
	{
		for(j=i+1;j<=length-n;j++)
		{
			if(strcmp(s1[i],s1[j])==0)
				x[i]=x[i]+1;
		}
	}
	max=x[0];
	for(i=0;i<=length-n;i++)
	{
		if(x[i]>max)
			max=x[i];
	}
	if(max==0)
		printf("NO");
	else
	{printf("%d\n",max+1);
	for(i=0;i<=length-n;i++)
	{
		if(x[i]==max)
			printf("%s\n",s1[i]);
	}}
	return 0;
}
int max(int a[])
{
      int i, j, t;
      for(i=0,t=a[0];i<498;i++)
           if(t<a[i])t=a[i];
      return(t);
}
main()
{
      int n, i, j, p, a[498],m;
      for(i=0;i<498;i++) a[i]=1;
      char str1[500], str2[5]={'\0','\0','\0','\0','\0'};
      scanf("%d",&n);
      scanf("%s",str1);
      for(j=0;j<strlen(str1)-n+1;j++)
      {
           for(p=0,i=j;p<n;p++,i++) str2[p]=str1[i];
           for(i=j+1;i<strlen(str1);i++)
           {
                if(str1[i]==str2[0]) 
                 {
                       int k=1;
                       for(m=i+1,p=1;m<strlen(str1) && p<strlen(str2);m++, p++)
                       {
                             if(str1[m]==str2[p]) k++;
                             else break;
                       }
                       if(k==strlen(str2)) a[j]++;
                 }
           }
           
      }
      if(max(a)==1) printf("NO");
      else
      {
           printf("%d\n",max(a));
      for(i=0;i<strlen(str1)-n+1;i++)
      {
           if(a[i]==max(a))
           {
                 for(p=0,j=i;p<n;p++,j++) str2[p]=str1[j];
                 printf("%s\n",str2);
           }
      }
      }
      
}
main()
{
    int a,b,c,d,m,n;
    char x[510];
    int y[510]={0};
    scanf("%d",&n);
    scanf("%s",x);
    a=strlen(x)-1;
    for(b=0;b<=a-n+1;b++)
    {
        for(c=b;c<=a-n+1;c++)
        {
            for(d=0;d<=n-1;d++)
            {
                if(x[c+d]!=x[b+d])
                break;
                else;
            }
            if(d==n)
            y[b]++;
            else;
        }
    };
    m=y[0];
    for(b=0;b<=a-n+1;b++)
    {
        if(y[b]>m)
        m=y[b];
        else;
    }
    if(m==1)
    printf("NO");
    else
    {
        printf("%d\n",m);
        for(b=0;b<=a-n+1;b++)
        {
            if(y[b]==m)
            {
                for(c=0;c<=n-1;c++)
                printf("%c",x[b+c]);
                printf("\n");
            }
        }
    }
}
int main()
{
	int n,c[510],max=0;
	scanf("%d\n",&n);
	char s[510],m[510][5];
	gets(s);
	int i,j;
	for(i=0;i<=strlen(s)-n;i++)
	{
		for(j=0;j<n;j++)
		{
			m[i][j]=s[i+j];
		}
		m[i][n]='\0';
	}
	for(i=0;i<=strlen(s)-n;i++)
	{
		c[i]=1;
		for(j=i+1;j<=strlen(s)-n;j++)
		{
			if(strcmp(m[i],m[j])==0)
			{
				c[i]++;
			}
		}
	}
	for(i=0;i<=strlen(s)-n;i++)
	{
		if(c[i]>max)
		{
			max=c[i];
		}
	}
	if(max>1)
	{
		printf("%d\n",max);
	for(i=0;i<=strlen(s)-n;i++)
	{
		if(c[i]==max)
			printf("%s\n",m[i]);
	}
	}
	else
		printf("NO");
	return 0;
}
struct T
{
       char s[10],n;
}s[300]={0};
int m=0,max=1;
void search(char t[])
{
     int i,b,j;
     for (i=0;i<m;i++)
     {
         b=strcmp(t,s[i].s);
         if (b==0)
         {
            s[i].n++;
            if (s[i].n>max)
               max=s[i].n;
            return;
         }
     }
     m++;
     strcpy(s[i].s,t);
     s[i].n=1;
     return;
}
int main()
{
    int i,j,n,l;
    char S[600],t[10];
    scanf("%d",&n);
    scanf("%s",S);
    l=strlen(S);
    for (i=0;i<l-n+1;i++)
    {
        for (j=0;j<n;j++)
            t[j]=S[i+j];
        t[n]='\0';
        search(t);
    }
    if (max==1)
    {
       printf("NO\n");
       return 0;
    }
    printf("%d\n",max);
    for (i=0;i<m;i++)
        if (s[i].n==max)
           printf("%s\n",s[i].s);
    getchar();
    getchar();
    return 0;
}
int main()
{
	char str[510];
	char word[300][5];
	int n;
	int i,j,k;
	int len;
	int count;
	int max=1;
	scanf("%d\n",&n);
	gets(str);
	len=strlen(str);
	for (i=0,j=0;i<=len-n;i++)
	{
		for (k=0;k<n;k++)
		{
			word[j][k]=str[i+k];
		}
		word[j][n]='\0';
		j++;
	}
	for (i=0;i<j;i++)
	{
		count=0;
		for (k=i;k<j;k++)
		{
			if (strcmp(word[i],word[k])==0)
			{
				count++;
			}
		}
		max=(count>max)? count:max;
	}
	if (max==1)
	{
		printf("NO\n");
		return 0;
	}
	else
	{
		printf("%d\n",max);
		for (i=0;i<j;i++)
		{
			count=0;
			for (k=i;k<j;k++)
			{
				if (strcmp(word[i],word[k])==0)
				{
					count++;
				}
			}
			if (count==max)
			{
				printf("%s\n",word[i]);
			}
		}
		return 0;
	}
}
// * * * * * * * * * * * * * *
// *???????           *
// *??????  1300013011 *
// *???2013.12.13         *
// * * * * * * * * * * * * * *
int main()
{
	int i, j, l, k;
	int n, a[502] = {0}, cnt = 0;  // cnt???????????
	// ????gram?????????a?????????
	char ch[502], gram[502][6] = {0}, *p = ch;
	cin >> n;
	cin >> ch;
	for (i = 0; *(p + i + n - 1) != '\0'; i++)  // ???????????
	{
		for (j = 0; j < n; j++)
		{
			gram[cnt][j] = *(p + i + j);   // ?????????????	
		}
		a[cnt]++;    // ????????1	
		for (k = 0; k < cnt; k++)  // ????????????
		{
			for (l = 0; l < n; l++)
			{
			    if (gram[k][l] != gram[cnt][l])  // ???????
					break;
			}
			if (l == n)   // ??????????????1??????
			{
				a[k]++;
				a[cnt]--;
				memset(gram[cnt], 0, sizeof(gram[cnt]));
			}
		}
		if (a[cnt] != 0)  // ???????????????????????1
			cnt++;
	}
    int max = 0;
	for (i = 0; i < cnt; i++)  // ??????????
	{
		if (a[i] > max)
			max = a[i];
	}
	if (max == 1)
		cout << "NO" << endl;   // ?????1.???NO
	else
	{
		cout << max << endl;
		for (i = 0; i < cnt; i++)  // ???????????????
			if (a[i] == max)
				cout << gram[i] << endl;
	}
	return 0;
}
int main()
{
    int n,bz,i,j,k,len,m,d,temp;
	char a[505],t[10];
	char b[700][10];
	int c[700]={0};
	scanf("%d",&n);
	scanf("%s",a);
	len=strlen(a);
	d=len-n+1;
	for(i=0;i<d;i++)
	{
		k=i;
		for(j=0;j<n;j++)
		{
			b[i][j]=a[k];
	
			k++;
		}
	}
	for(i=0;i<d;i++)
	{
		for(k=0;k<i;k++)
		{
			if(strcmp(b[i],b[k])==0) {c[k]++;break;}
		}
	}
	for(i=0;i<d;i++)
	{
		for(j=0;j<d-1;j++)
		{
			if(c[j]<c[j+1])
			{
				temp=c[j];strcpy(t,b[j]);
				c[j]=c[j+1];strcpy(b[j],b[j+1]);
				c[j+1]=temp;strcpy(b[j+1],t);
			}
		}
	}
    
	if(c[0]==0) printf("NO");
	else
	{
		for(i=0;i<d-1;i++)
		{
			if(c[i]!=c[i+1]) {bz=i+1;break;}
		}
        if(i==d-1) bz=d;
		printf("%d\n",c[0]+1);
		for(m=0;m<bz;m++)
		{
			printf("%s\n",b[m]);
		}
	}
	return 0;
}
void main()
{int m,n,i,j,y=0,k=0,b[500],max;
 char s[500],a[500][5];
 scanf("%d",&n);
 scanf("%s",s);
 m=strlen(s);
 for(i=0;i<=m-n;i++)
     {   for(j=0;j<n;j++)
              {a[i][j]=s[k];k++;}
              k=k-n+1;
              }
     for(i=0;i<=m-n;i++)
       {   b[i]=1;
           for(j=i+1;j<=m-n;j++)
               {
                   if(strcmp(a[i],a[j])==0)  {b[i]++;}
               }
       }
       max=b[0];
    for(i=0;i<=m-n;i++)
        {
            if(b[i]>max)  max=b[i];
        }
for(i=0;i<=m-n;i++)
     {
         if(b[i]==max)  y++;
     }
    if(max>1){ printf("%d\n",max);
        for(i=0;i<=m-n;i++)
           {
               if(b[i]==max)  {printf("%s\n",a[i]);}
           }}
           else printf("NO");
}
int main()
{
	char z[502];
	int n,a,b,c,d,max,count,len,x[502];
	scanf("%d",&n);
	scanf("%s",z);
    len=strlen(z);
	for(a=0;a<=len;a++) 
	{
		x[a]=0;
	}
	for(a=0;a<=len-n;a++)
	{
		for(b=a;b<=len-n;b++)
		{
			d=0;
			for(c=0;c<=n-1;c++)
			{
				if(z[a+c]==z[b+c]) d++;
				if(d==n) x[a]++;
			}
		}
	}
	
	max=x[0];
	count=0;
	for(a=0;a<=len-n;a++)
	{
		if(max<x[a])
		{
			count=1;
			max=x[a];
		}
		if(max==x[a])
		{
			count++;
		}
	}
	if (max==1)
	{
		printf("NO");
		return 0;
	}
	printf("%d\n",max);
	//for(a=0;a<=count-1;a++)
	//{
		for(b=0;b<=len-n;b++)
		{
			if(x[b]==max)
			{
				for(c=0;c<=n-1;c++)
				{
					printf("%c",z[b+c]);
				}
				printf("\n");
			}
		}
		printf("\n");
	//}
	return 0;
}
int main()
{
	char str[503];
	char str2[501][6]={'\0'};
	int a[503];
	int i,j,n,p,flag,t,k;
	scanf("%d",&n);
	scanf("%s",str);
	t=strlen(str)-n;
	for(i=0;i<=502;i++)
	{
		a[i]=0;
	}
	for(i=0;i<=t;i++)
	{
		for(j=i,p=0;j<=i+n-1;j++)
		{
			str2[i][p]=str[j];
			p++;
		}
	}
	for(i=0;i<=t;i++)
	{
		for(j=i-1,flag=0;j>=0;j--)
		{
			if(strcmp(str2[i],str2[j])==0)
			{
				flag=1;
				break;
			}
		}
		if(flag==0||i==0)
		{
			for(j=i;j<=t;j++)
			{
				if(strcmp(str2[i],str2[j])==0)
				{
					a[i]++;
				}
			}
		}
	}
	for(i=0,k=0;i<=t;i++)
	{
		if(a[i]>k)
		{
			k=a[i];
		}
	}
	if(k>1)
	{
		printf("%d\n",k);
		for(i=0;i<=t;i++)
		{
			if(a[i]==k)
			{
				printf("%s\n",str2[i]);
			}
		}
	}
	else if(k=1)
	{
		printf("NO");
	}
	return 0;
}
int main()
{
char a[500];
int b[500]={0}; 
int n,i,j,k,len,q=0,time=0,max; 
scanf("%d",&n);   
scanf("%s",a);
len=strlen(a);

 for(j=0;j<len-n+1;j++)
      {       
          for(i=0;i<=j;i++)                                                     
             { 
                
                for(k=0;k<n;k++)
               {   
                 if(a[j+k]==a[i+k])
                 q++;
                 else { q=0;break; }                            
               }
              if(q==n)
              {b[i]++;q=0;break;}
              else
              q=0; 
              
            }     
                  
     } 
//for(i=0;i<len-n+1;i++)
//printf("%d",b[i]);


max=b[0];
for(i=1;i<len-n+1;i++)
{
  if(b[i]>max)
  max=b[i];
  else;   
}


if(max==1) 
printf("NO");
else
{   
    printf("%d\n",max);
    for(i=0;i<len-n+1;i++)
    {
     if(max==b[i])
     for(k=0;k<n;k++)
         {    
             printf("%c",a[i+k]);
         }    
     printf("\n");
    }
}    
return 0;              
}
main()
{
char s[501];
int n,i,j,k;
scanf("%d %s",&n,s);
int t=strlen(s);
char a[501][5];
for(i=0;i<=t-n;i++)
for(j=0;j<5;j++)
a[i][j]=s[i+j];
int b[501]={0};
int c;
for(i=1;i<=t-n;i++)
{for(k=0;k<i;k++)
{c=0;
    for(j=0;j<n;j++)
{
if(a[i][j]==a[k][j])
c++;
else
break;
if(c==n)
b[k]++;
}
}
}
c=b[0];
for(i=1;i<=t-n;i++)
{if(b[i]>c)
c=b[i];
}
if(c==0)
printf("NO");
else
{printf("%d\n",c+1);
for(i=0;i<=t-n;i++)
{if(b[i]==c)
{for(j=0;j<n-1;j++)
printf("%c",a[i][j]);
if(j==n-1)
printf("%c\n",a[i][j]);
}
}
}
}
int main()
{
    int m=0;
    cin>>m;
    cin.get();
    char word[500];
    cin.getline(word,500);
    int l=0;
    l=strlen(word);
    char chuan[500][500];
    int i=0;
    int j=0;
    //int p=0;
    for (i=0;i<l-m+1;i++)
    {
        for (j=0;j<m;j++)
        {
            chuan[i][j]=word[i+j];
        }
        chuan[i][j]='\0';
        //p++;
    }
    /*for (int k=0;k<l-m+1;k++)
    {
        cout<<chuan[k]<<endl;
    }
cout<<p<<endl;
    */int num[500]={0};
    for (int x=0;x<l-m+1;x++)
    {
        for (int y=x;y<l-m+1;y++)
        {
            int sum=0;
                for (int p=0;p<m;p++)
                {
                    if (chuan[y][p]!=chuan[x][p])
                    {
                        sum++;
                        break;
                    }
                    //num[x]++;
                }
                if (sum==0)
                {
                    num[x]++;
                }
        }
    }

        /*for (int k=0;k<l-m+1;k++)
        {
            cout<<num[k]<<endl;
        }

        */int temp=num[0];
        int tempx=0;
        for (int i=1;i<l;i++)
        {
            if (num[i]>temp)
            {
                temp=num[i];
                tempx=i;
            }
        }
        if (temp==1) cout<<"NO"<<endl;
        else
        {
        cout<<num[tempx]<<endl;
        for (int i=0;i<l;i++)
        {
            if (num[i]==num[tempx])
            {
                cout<<chuan[i]<<endl;
            }
        }
        }
    return 0;
}
int main()
{
	int n,i,j,o[500],ji,max=0;
	char a[502],b[6],cmp[6],c[500][6];
	scanf("%d",&n);
	b[n]='\0';
	cmp[n]='\0';
	getchar();
	gets(a);
	int len;
	len=strlen(a);
	ji=0;
	for(i=0;i<len-n+1;i++)
	{
		o[ji]=0;
		for(j=0;j<n;j++)
		{
			c[ji][j]=a[i+j];
		}
		c[ji][n]='\0';
		for(j=0;j<len-n+1;j++)
		{
			int k;
			for(k=0;k<n;k++)
			{
				cmp[k]=a[j+k];
			}
			if(strcmp(cmp,c[ji]))
			{}
			else
			{
				o[ji]++;
			}
		}
		if(o[ji]>max)
			max=o[ji];
		for(j=0;j<ji;j++)
		{
			if(strcmp(c[j],c[ji]))
			{}
			else
			{
				ji--;break;
			}
		}
		ji++;
	}
	j=0;
	if(max!=1)
	{
		printf("%d\n",max);
		for(i=0;i<ji;i++)
		{
			if(o[i]==max)
				puts(c[i]);
		}
	}
	else
	{
		printf("NO");
	}
	return 0;
}
int main()
{
    int n,i,j,k,t,a[500]={0},max=0;
	char str[501]={'\0'};
	scanf("%d\n%s",&n,str);
	for(i=0;*(str+i+n-1)!='\0';i++){
		if(*(a+i)==0){
			*(a+i)+=1;
			for(j=i+1;*(str+j+n-1)!='\0';j++){
				t=1;
				for(k=0;k<n;k++)
					if(*(str+j+k)!=*(str+i+k)){
						t=0;
						break;
					}
				if(t){
					*(a+i)+=1;
					*(a+j)=1;
				}
			}
		}
	}
	for(i=0;*(str+i+n-1)!='\0';i++)
		if(*(a+i)>max)
			max=*(a+i);
	if(max>1){
	printf("%d\n",max);
	for(i=0;*(str+i+n-1)!='\0';i++)
		if(*(a+i)==max){
			for(j=0;j<n;j++)
				printf("%c",*(str+i+j));
			printf("\n");
		}
	}
	else printf("NO");
	return 0;
}
int main()
{
	int n;
	char input[501];
	scanf("%d", &n);
	gets(input);
	gets(input);
	int len = strlen(input);

	int count[501] = {0};//????i???i?????n???????????????count[i]=-1??????????????
	int i, j, k;
	for(i = 0; i < len; i++) {
		if(i + n > len) {
			break;//???????????n??????
		}
		if(count[i] == -1) {
			continue;//count[i]==-1????????????
		}
		for(j = i + 1; j < len; j++) {
			if(j + n > len) {
				break;//????????????????n??????????
			}
			int equal = 1;//equal==1?????????equal=0??????
			for(k = 0; k < n; k++) {
				if(input[i+k] != input[j+k]) {
					equal = 0;
					break;
				}
			}

			if(equal == 1) {
				count[i]++;//??count??
				count[j] = -1;//??????
			}
		}
	}

	//???????
	int max = -1, max_pos = 0;
	for(i = 0; i < len; i++) {
		if(count[i] > max) {
			max = count[i];
			max_pos = i;
		}
	}
	//?????????????????
	if(max + 1 <= 1) {
		printf("NO\n");
		return 0;
	}
	printf("%d\n", max+1);
	for(i = 0; i < len; i++) {
		if(count[i] == max) {
			for(j = i; j < i + n; j++) {
				printf("%c", input[j]);
			}
			printf("\n");
		}
	}
	

}
int main(int argc, char* argv[])
{
	char s[600];
	int n,i,j,l;
	scanf("%d",&n);
	scanf("%s",s);
	l=strlen(s);
	int a[500]={0},max=0;
	int k;
	for(i=0;i<l;i++)
	{
	
		for(j=1+i;j<l;j++)
		{
			
			for(k=0;k<n;k++)
			{
				if(s[i+k]!=s[j+k])
					break;
			}
			if(k==n)
			{
				a[i]++;
				
			}		
		}
		
	}
	
	for(i=0;i<l;i++)
	{ 
		if(a[i]>max)
		{
			k=i;
			max=a[i];
		}
	}
	if(max==0)
		printf("NO");
	else


	{
	printf("%d\n",a[k]+1);
	for(j=0;j<l;j++)
	{
		if(a[j]==max)
		{
			for(k=0;k<n;k++)
				printf("%c",s[j+k]);
			printf("\n");
		}		
	}
	}
	
	return 0;
}
int main ()
{
	int i,k,n,a[300],l,j,max;
	char s[500],gram[300][5];
	scanf("%d%s",&n,s);
	l=strlen(s);
	for(i=0;i<l-n+1;i++)
	{
		k=0;
		for(j=i;j<i+n;j++)
		{
			gram[i][k++]=s[j];
		}
		gram[i][k]='\0';
	}
	for(i=0;i<l-n+1;i++)
	{
		a[i]=1;
		for(j=i+1;j<l-n+1;j++)
		{
			if(strcmp(gram[i],gram[j])==0)
				a[i]++;
		}
	}
	max=a[0];
	for(i=0;i<l-n+1;i++)
		if(a[i]>max)
			max=a[i];
	if(max==1)
		printf("NO");
	else
	{
		printf("%d",max);
		for(i=0;i<l-n+1;i++)
			if(a[i]==max)
				printf("\n%s",gram[i]);
	}
	return 0;
}
int main()
{
	int a[500],i,j,k,m,n,max,z;
	char s[500][5],x[500];
	scanf("%d",&m);
	scanf("%s",x);
	n=strlen(x);
	for(i=0;i<=n-m;i++)
		for(j=0;j<=m-1;j++)
			s[i][j]=x[i+j];
	for(i=0;i<=n-m;i++)
		a[i]=1;
	for(i=0;i<=n-m-1;i++)
		for(j=i+1;j<=n-m;j++)
		{
			z=0;
			for(k=0;k<=m-1;k++)
			{
			
				if(s[i][k]==s[j][k])
				{
					z=1;
				}
				else
				{	z=0;
					break;
				}
			}
			if(z==1)
				a[i]++;
		}
	for(i=1,max=a[0];i<=n-m-1;i++)
		if(a[i]>max)
			max=a[i];
	if(max==1)
		printf("NO");
	else
	{
		printf("%d\n",max);
		for(i=0;i<=n-m-1;i++)
			if(a[i]==max)
			{
				for(j=0;j<m;j++)
					printf("%c",s[i][j]);
				printf("\n");
			}
	}

}
int main()
{
    int i,j,k,l,m,n,z,b[500];
    char s[500],a[500][6];
    scanf("%d",&n);
    scanf("%s",s);
    l=strlen(s);
    m=1;
    for(i=0;i<l-n+1;i++)
    {
                        for(j=0;j<n;j++)
                        {
                                        a[i][j]=s[i+j];
                        }
    }
    for(i=0;i<l-n;i++)
    {
                        b[i]=1;
                        for(j=(i+1);j<l-n+1;j++)
                        {
                                            z=1;
                                            z=strcmp(a[i],a[j]);
                                            if(z==0) b[i]++; 
                        }
                        if(b[i]>m) m=b[i];
    }
    if(m==1) printf("NO");
    else
    {
        printf("%d\n",m);
        for(i=0;i<l-n;i++)
        {
                          if(b[i]==m) printf("%s\n",a[i]);
        }
    }

}
int main()
{   
	int count[600]={0};
	int n;
	char a[600]="";
	char b[600][10]={""};
	scanf("%d\n",&n);
	gets(a);
	int s=strlen(a);
	int i,j;
	for(i=0;i+n<=s;i++)
	{
         for(j=0;j<n;j++)
			 b[i][j]=a[i+j];
	}
	
	int k=s-n+1;
	for(i=0;i<k;i++)
		for(j=i+1;j<k;j++)
			if(strcmp(b[i],b[j])==0)
				count[i]++;
	int max=0;
	int y=0;
	for(i=0;i<k;i++)
		if(count[i]>max)  max=count[i];
		if(max==0) {printf("NO");return 0;}
     printf("%d\n",max+1);
	 for(i=0;i<k;i++)
		 if(max==count[i])
			 puts(b[i]);
	return 0;
}
void main()
{
    char a[501],b[500][6];
	int n,i,j,len,c[500],max;
	scanf("%d",&n);
    scanf("%s",a);
	len=strlen(a);
	for(i=0;i<=len;i++)
		c[i]=1;
    for(i=0;i<=len-n;i++)
	{
		for(j=0;j<=n-1;j++)
			b[i][j]=a[i+j];
		b[i][j]='\0';
	}
	for(i=0;i<=len-n-1;i++)
		strcpy(b[i],b[i]);
	for(i=0;i<=len-n-1;i++)
	{
		for(j=i+1;j<=len-n;j++)
		{
            if(strcmp(b[i],b[j])==0)
				c[i]++;
		}
	}
    max=c[0];
	for(i=1;i<=len-n;i++)
	{
		if(c[i]>max)
			max=c[i];
	}
	if(max==1)
		printf("NO");
	else
	{ 
		printf("%d\n",max);
		for(i=0;i<=len-n;i++)
		if(c[i]==max)
			printf("%s\n",b[i]);
	}

}
void main()
{
	int n,m,i=0,j=0,k=0,a[502];
	char s[502],t[502][6];
	scanf("%d",&n);
	scanf("%s",s);
	m=strlen(s);
	for(i=0;i<m+1-n;i++)
	{
		for(j=0;j<n;j++)
		{
			t[i][j]=s[i+j];
		}
		t[i][j]='\0';
	}
	for(i=0;i<m+1-n;i++) a[i]=1;
	for(i=0;i<m+1-n;i++)
	{
		if(a[i]==0) continue;
		for(j=i+1;j<m+1-n;j++)
		{
			if(strcmp(t[i],t[j])==0)
			{
				a[i]++;
				a[j]=0;
			}
		}
	}
	for(i=0;i<m+1-n;i++) if(a[i]>k) k=a[i];
	if(k==1) printf("NO\n");
	else
	{
		printf("%d\n",k);
		for(i=0;i<m+1-n;i++) if(a[i]==k) printf("%s\n",t[i]);
	}
}
int compare(char str1[],char str2[],int x)
{
	int i,l;
	l=strlen(str1);
	for (i=0;i<l;i++)
	{
		if (str1[i]==str2[i+x])
			continue;
		else
			return 1;
	}
	return 0;
}

void main()
{
	int i,j,l,k,n,sum,max=0;
	char a[501]={'\0'},b[6]={'\0'},c[100][6]={'\0'};
	scanf ("%d\n",&n);
	gets (a);
	l=strlen(a);
	for (i=0;i<=l-n;i++)
	{
		sum=0;
		for (j=0;j<n;j++)
			b[j]=a[i+j];
		b[n]='\0';
		for (j=0;j<=l-n;j++)
		{
			if (compare(b,a,j)==0)
				sum++;
		}
		if (sum>max)
			max=sum;
	}
	for (k=0,i=0;i<=l-n;i++)
	{
		sum=0;
		for (j=0;j<n;j++)
			b[j]=a[i+j];
		b[n]='\0';
		for (j=i;j<=l-n;j++)
		{
			if (compare(b,a,j)==0)
				sum++;
		}
		if (sum==max)
		{
			strcpy(c[k],b);
			k++;
		}
	}
	if (max==1)
	{
		printf ("NO");
		return ;
	}
	printf ("%d\n",max);
	for (i=0;i<k;i++)
		printf ("%s\n",c[i]);
}
int Compare( char string1[],char string2[],int N )       //?????????????????????
{
	int flag=0,i=0,j=0;
	for ( i=0;i<N;i++ )
	{
		if ( string1[i]==string2[i] )
			flag=0;
		else if ( string1[i]!=string2[i] )
		{
			flag=1;
			break;
		}
	}
	if ( flag==0 )                                   //????????????????
		return 0;
	else if ( flag==1 )                              //??????????????????
		return 1;
}

int main()
{
	char string[600],List[600][600];                  //??????????????????????
	int Frequency[600];                               //?Frequency????????????
	int i=0,j=0,m=0,k=0,N=0,t=0,length=0,Max=0;
	cin>>N;
	gets( string );
	gets( string );
	length=strlen( string );
	i=0,j=0,k=0;
	while ( length>=N )                               //???????????????????????
	{
		for ( i=0;i<N;i++ )
		{
			List[k][i]=string[k+i];
		}
		k++;
		i=0;
		length=length-1;
	}
	
	for ( i=0;i<k;i++ )                               //???Frequency?????????
	{
		Frequency[i]=1;
	}
	//???????????????????
	
	for ( i=0;i<k;i++ )
	{
		if ( Frequency[i]==0 )                                         //??????????????????????????
			continue;
		for ( j=i+1;j<k;j++ )
		{
			if ( Compare( List[i],List[j],N )==0 )                    //????????????
			{
				Frequency[j]=0;                                    //?j???????????0
				Frequency[i]++;                                    //??i????????
			}
		}
	}
	
	for ( i=0;i<k;i++ )                                            //????Frequency?????????Max
	{
		if ( Frequency[i]>=Max )
			Max=Frequency[i];
	}
	
	if ( Max==1 )
		cout<<"NO"<<endl;
	else if ( Max>1 )
	{
		cout<<Max<<endl;
		for ( i=0;i<k;i++ )
		{
			if ( Frequency[i]==Max )
			{
				for ( j=0;j<N;j++ )
				{
					cout<<List[i][j];
				}
				cout<<endl;
			}
		}
	}
	return 0;
}
int main()
{
	char str[501];
	int i,j,n,k,p=1,x=0,a[400];
		for(i=0;i<400;i++)
			a[i]=1;
    scanf("%d",&n);
	scanf("%s",str);
	int len=strlen(str);
    for(i=0;i<len-n;i++)
	{
		for(j=i+1;j<len;j++)
		{
			int p=i;int t=j;int flag=1;
			for(k=0;k<n;k++)
			{
				if(str[t]!=str[p])
				{flag=0;break;}
				p++;t++;
			}
			if(flag==1)
				a[x]=a[x]+1;
		}
		x++;
	}
	for(i=0;i<x-2;i++)
	{if(a[i]!=1) p=0;}
	if(p==1)
		printf("NO");
	else
	{
		int max=0;
		for(i=1;i<x;i++)
		{
			if(a[i]>a[max])
				max=i;
		}
           printf("%d\n",a[max]);
		for(i=max;i<x-1;i++)
		{
			if(a[i]==a[max])
			{
				for(j=i;j<=i+n-1;j++)
				{printf("%c",str[j]);}
				printf("\n");
			}
		}
	}
	return 0;
}