semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char str[600];
	int n,i,j,lenth,len[600]={0};
	scanf("%d\n",&n);
	gets(str);
	char word[600][7]={{'\0'}};
	lenth=strlen(str);
	for(i=0;i<=lenth;i++)
	{
		if((str[i+n-1]=='\0')||(str[i+n-1]==',')||(str[i+n-1]=='.'))
		{
			break;
		}else{
			for(j=0;j<n;j++)
			{
				word[i][j]=str[i+j];
			}
		}
	}
	int log,num,sum;
	log=i-1;
	char zifu[600][10]={{'\0'}};
	strcpy(zifu[0],word[0]);
	num=0;
	len[0]=1;
	for(i=1;i<=log;i++)
	{
		for(j=0,sum=0;j<=num;j++)
		{
			if(strcmp(zifu[j],word[i])==0)
			{
				len[j]++;
				sum=1;
			}
		}
		if(sum!=1)
		{
			num++;
			len[num]=1;
			strcpy(zifu[num],word[i]);
		}
	}
	int max;
	max=len[0];
	for(i=1;i<=num;i++)
	{
		if(max<len[i])
		{
			max=len[i];
		}
	}
	if(max<=1)
	{
		printf("NO");
	}else{
	printf("%d\n",max);
	for(i=0;i<=log;i++)
	{
		if(len[i]==max)
		{
			printf("%s\n",zifu[i]);
		}
	}
	}
	return 0;
}
void main()
{
	int i,j,n,m,k,time[500]={0},max=1,p;
	char a[500];
	scanf("%d",&n);
	scanf("%s",a);
	for(i=0;i<=(strlen(a)-n);i++)
	{
		for(k=i;k<=(strlen(a)-n);k++)
		{
			p=0;
			for(j=0;j<n;j++)
			{
				if(a[k+j]==a[i+j])
					p++;
			}
			if(p==n)
				time[i]++;
		}
	}
	
	for(i=0;i<=(strlen(a)-n);i++)
	{
		if(max<=time[i])
		{
			max=time[i];
		}
	}
	if(max<=1)
		printf("NO");
	else
	{	printf("%d\n",max);
		for(i=0;i<=(strlen(a)-n);i++)
		{ 
			if(time[i]==max)
			{
				for(j=0;j<n;j++)
				{
					printf("%c",a[i+j]);
				}
				printf("\n");
			}
		}
	}
}
main()
{
      int i,j,n,c[500],p,max,count=0;
      char a[500],b[500][5];
      scanf("%d\n",&n); 
      max=0;
      for(i=0;i<500;i++)
      {
                        a[i]='\0';
                        c[i]=0;
                        for(j=0;j<5;j++)
                        {
                                        b[i][j]='\0';
                        }
      }
      gets(a);
      for(i=0;i<500;i++)
      {
                        if(a[i]=='\0')break;
                        else
                        count++;
      }
      for(i=0;i<=count-n;i++)
      {
                          for(j=0;j<n;j++)
                          {
                                          b[i][j]=a[i+j];
                          }
      }
      for(i=0;i<count-n;i++)
      {
                          for(j=0;j<=count-n;j++)
                          {
                                              p=strcmp(b[i],b[i+j]);
                                              if(p==0)
                                              c[i]++;
                          }                                             
      }
      for(i=0;i<101;i++)
      {
                          if(max<=c[i])
                          max=c[i];
      }
      if(max==1)
      printf("NO");
      else
      {
          printf("%d\n",max);
          for(i=0;i<200;i++)
          {
                          if(c[i]==max)
                          {
                                       printf("%s\n",b[i]);
                          }
          }
      }
      }
int main()
{
	int n,i,j,k,p,t;
	char a[500];
	scanf("%d\n",&n);
	gets(a);
	p=strlen(a);
	char b[500][500];
	int num[500],mark[500];
	for(i=0;i<500;i++)
	{mark[i]=i;num[i]=0;}
	for(i=0;i<p-n+1;i++)
	{
		for(j=i;j<i+n;j++)
		{
			b[i][j-i]=a[j];
        }
		b[i][j-i]='\0';
    }
	
	for(i=0;i<p-n;i++)
	for(j=i+1;j<p-n+1;j++)
	{
		if(strcmp(b[i],b[j])==0)
		num[i]++;
    }
	for(i=0;i<p-n;i++)
	for(j=i+1;j<p-n+1;j++)
	{
		if(num[j]>num[i])
		{t=num[j];num[j]=num[i];num[i]=t;
		 t=mark[i];mark[i]=mark[j];mark[j]=t;
        }
    }
	if(num[0]==0)printf("NO");
	else
	{

	printf("%d\n",num[0]+1);
	puts(b[mark[0]]);
	for(i=1;;i++)
	{
		if(num[i]<num[0])break;
		else puts(b[mark[i]]);
    }
    }

}
int main()
{
    char a[510];
    int cnt[500] = {0};
    int f[500] = {0};
    int n, i, j, l, m = 0, flag = 0;
    cin >> n;
    cin >> a;
    char b[500][n + 10];
    l = strlen(a);
    memset( b, 0, sizeof( b) ) ;
    for(i = 0; i < l - n + 1; ++i)
        {
            for(j = 0; j < n; j++)
            b[i][j] = *(a + i + j);
        }
    for(i = 0; i < l - n; ++i)
        {
            if( f[i] )
            continue ;
            for(j = i + 1; j < l - n + 1; ++j)
            {
                if(strcmp(*(b + i), *(b + j)) == 0)
                {
                    flag = 1;
                    f[j] = 1;
                    cnt[i] ++;
                }
            }
        }
    if(flag == 0)
    cout << "NO" << endl;
    else
    {
        for(i = 0; i < 500; i++)
        {
            if(cnt[i] > m)
                m = cnt[i];
        }
        cout << m + 1 << endl;
        for(i = 0; i < 500; i++)
        {
            if(f[i] == 0 && cnt[i] == m)
                cout << *(b + i) << endl;
        }
    }

    return 0;
}
int main()
{
	char x[501];
	char ch[500][5];
	char y[5]="";
	int i,j,m=-1,flag,k,n,l,p,q,t,r,max,count[500]={0};
	scanf("%d ",&n);
	gets(x);
	l=strlen(x);
	for(i=0;i<l-n+1;i++)
	{
		flag=0;
		for(j=0;j<n;j++)
			y[j]=x[i+j];
		for(k=0;k<=m;k++)
		{
			if(strcmp(y,ch[k])==0)
			{
				count[k]++;
				flag++;
				break;
			}
		}
		if(flag==0)
		{
			m++;
			strcpy(ch[m],y);
			count[m]++;
		}
	}
	for(q=0;q<m;q++)
	{
		for(p=0;p<m-q;p++)
		{
			if(count[p]>count[p+1])
			{
				strcpy(y,ch[p]);strcpy(ch[p],ch[p+1]);strcpy(ch[p+1],y);
				t=count[p];count[p]=count[p+1];count[p+1]=t;
			}
		}
	}
	max=count[m];
	if(max>1)
	{
		for(i=m;;i--)
		{
			if(count[i]<max)
				break;
		}
		printf("%d\n",max);
		for(j=i+1;j<=m;j++)
		{	
			for(r=0;r<n;r++)
				printf("%c",ch[j][r]);
			printf("\n");
		}
	}
	else
		printf("NO\n");
}
int main()
{
	int n,len,i,j;
	char a[501];
	char s[500][6]={0};
	int times[500]={0};
	cin>>n;
	cin>>a;
	len=strlen(a);
	for(i=0;i<=len-n;i++)//?????n-gram
	{
		for(j=0;j<n;j++) s[i][j]=a[i+j];
		s[i][n]='\0';
		times[i]++;
	}
	//for(i=0;i<=len-n;i++) cout<<s[i]<<endl;
	for(i=0;i<=len-n;i++)
		for(j=0;j<i;j++)//??????
		{
			if(strcmp(s[i],s[j])==0)
			{
				times[j]++;
				times[i]=0;
				break;
			}
		}
	//for(i=0;i<=len-n;i++) cout<<times[i]<<endl;
	int max=1;
	for(i=0;i<=len-n;i++) if(times[i]>max) max=times[i];
	if(max==1) {cout<<"NO"<<endl;return 0;}
	cout<<max<<endl;
	for(i=0;i<=len-n;i++) if(times[i]==max) cout<<s[i]<<endl;
	return 0;
}
int main()
{
	struct ngram{
		char ngstr[5];
		int ifx;
	};/*??ngram ngstr?n????  ifx??????????????0?????1?ngram???????????*/
	int n;
	scanf("%d",&n);
	/*?????*/
	char str[505];
	scanf("%s",str);
	int i,j;
	struct ngram a[505];
	memset(a,0,sizeof(ngram)*505);
	int len=strlen(str);
	/*ngram??*/
	for(i=1;i<=len-n+1;i++)
	{
		for(j=1;j<=n;j++)
		{
			a[i-1].ngstr[j-1]=str[i+j-2];
		}
		a[i-1].ifx=1;
		a[i-1].ngstr[j]=0;
	}
	/*ngram??????????????ifx++*/
	for(i=1;i<=len-n+1;i++)
	{
		if(a[i-1].ifx==0)
		{
			continue;
		}
		else
		{
			for(j=i+1;j<=len-n+1;j++)
			{
				if(strcmp(a[i-1].ngstr,a[j-1].ngstr)==0)
				{
					a[i-1].ifx++;
					a[j-1].ifx=0;
				}
				else
				{}
			}
		}
	}
	/*To find the Max of "ifx"*/
	int max;
	max=a[0].ifx;
	for(i=1;i<=len-n+1;i++)
	{
		if(a[i-1].ifx==0)
		{
			continue;
		}
		else
		{
			if(a[i-1].ifx>max)
			{
				max=a[i-1].ifx;
			}
			else
			{}
		}
	}
	/*print*/
	if(max==1)
	{
		printf("NO");
	}
	else
	{
		printf("%d\n",max);
		for(i=1;i<=len-n+1;i++)
		{
			if(a[i-1].ifx==max)
			{
				printf("%s\n",a[i-1].ngstr);
			}
		}
	}
	return 0;
}
void main()
{
	char s[500],a[500];
	int i,j,t,l,n,k,max,sig;
	scanf("%d\n",&n);
	gets(s);
	l=strlen(s);
	for(i=0;i<=(l-n);i++)
	{
		a[i]=0;
		for(j=i;j<=(l-n);j++)
		{
			sig=1;
			for(k=0;k<n;k++)
			{
				if(s[i+k]==s[j+k])
					t=1;
				else t=0;
				sig=(1*t*sig);
			}
			if(sig==1)
				a[i]++;
		}
	}
	max=1;
	for(i=0;i<=(l-n);i++)
	{
		if(a[i]>=max)
			max=a[i];
	}
	if(max!=1)
	{
	printf("%d\n",max);
	for(i=0;i<=(l-n);i++)
	{
		if(a[i]==max)
		{
			for(k=0;k<n;k++)
			{
				printf("%c",s[i+k]);
			}
			printf("\n");
		}
	}
	}
	else printf("NO\n");
}
int main()
{
    int a,b,c,n,i,j;
    char s[500];
    int d[500]={0}; 
    scanf("%d",&n);
    scanf("%s",s);
    a=strlen(s);
    if(n==3)
    {for(i=0;i<a-2;i++)
    {
                      for(j=0;j<a-2;j++)
                      {
                      if(s[j]==s[i]&&s[j+1]==s[i+1]&&s[j+2]==s[i+2])
                      d[i]++;
                                      }
                    
                    }
    b=0;
    for(i=0;i<a-2;i++)
    {
                      if(b<d[i])
                      b=d[i];
                      }
                      if(b==1)
                      printf("NO");
                      else
                      {
                      printf("%d\n",b);
        for(i=0;i<a-2;i++)
    {
        if(d[i]==b)
        {
                   printf("%c%c%c\n",s[i],s[i+1],s[i+2]);
                    for(j=0;j<a-2;j++)
                      {
                      if(s[j]==s[i]&&s[j+1]==s[i+1]&&s[j+2]==s[i+2])
                      d[j]=0;
                                      }
                   }
        }}
     }
     if(n==2)
       {for(i=0;i<a-1;i++)
    {
                      for(j=0;j<a-1;j++)
                      {
                      if(s[j]==s[i]&&s[j+1]==s[i+1])
                      d[i]++;
                                      }
                    
                    }
    b=0;
    for(i=0;i<a-1;i++)
    {
                      if(b<d[i])
                      b=d[i];
                      }
                        if(b==1)
                      printf("NO");
                      else
                      {
                      printf("%d\n",b);
        for(i=0;i<a-1;i++)
    {
        if(d[i]==b)
        {
                   printf("%c%c\n",s[i],s[i+1]);
                    for(j=0;j<a-1;j++)
                      {
                      if(s[j]==s[i]&&s[j+1]==s[i+1])
                      d[j]=0;
                                      }
                   }
        }}
     }
         if(n==4)
    {for(i=0;i<a-3;i++)
    {
                      for(j=0;j<a-3;j++)
                      {
                      if(s[j]==s[i]&&s[j+1]==s[i+1]&&s[j+2]==s[i+2]&&s[j+3]==s[i+3])
                      d[i]++;
                                      }
                    
                    }
    b=0;
    for(i=0;i<a-3;i++)
    {
                      if(b<d[i])
                      b=d[i];
                      }
                        if(b==1)
                      printf("NO");
                      else
                      {
                      printf("%d\n",b);
        for(i=0;i<a-3;i++)
    {
        if(d[i]==b)
        {
                   printf("%c%c%c%c\n",s[i],s[i+1],s[i+2],s[i+3]);
                    for(j=0;j<a-3;j++)
                      {
                      if(s[j]==s[i]&&s[j+1]==s[i+1]&&s[j+2]==s[i+2]&&s[j+3]==s[i+3])
                      d[j]=0;
                                      }
                   }
        }}
     }
   
    
}
int main()
{int n,i,j,t,s,c[505],d[505];
for(i=0;i<505;i++)
{c[i]=0; d[i]=0;}
char a[505],b[505][6];
scanf("%d\n",&n);
gets(a);
t=strlen(a);
for(i=0;i<=t-n;i++)
{for(j=i;j<i+n;j++)
b[i][j-i]=a[j];
b[i][j-i]=0;}
for(i=0;i<=t-n;i++)
for(j=i+1;j<=t-n;j++)
if(strcmp(b[i],b[j])==0) {c[i]++; d[i]++;}
for(i=0;i<t-n;i++)
for(j=0;j<t-n-i;j++)
if(c[j]>c[j+1]) {s=c[j];c[j]=c[j+1];c[j+1]=s;}
//for(i=0;i<=t-n;i++)
//printf("%d\n",c[i]);
if(c[t-n]==0) printf("NO");
else
{printf("%d\n",c[t-n]+1);
for(j=0;j<=t-n;j++)
if(d[j]==c[t-n]) puts(b[j]);
}

return 0;
}
main()
{
	char s[510]={0},temp[10]={0};
	char gram[510][10]={{0}};
	int b[510]={0};
	int n,max=1,t=0;
	int len;
	int i,j;

	scanf("%d\n",&n);
	gets(s);
	len=strlen(s);

	for(i=0;i<len+1-n;i++){
		for(j=0;j<n;j++)
			temp[j]=s[i+j];
		for(j=0;j<t;j++)
			if(strcmp(temp,gram[j])==0)
				b[j]++;
		if(j==t)
		{strcpy(gram[t],temp);b[t]++;t++;}
		for(j=0;j<10;j++) temp[j]=0;
	}

	for(i=0;i<t;i++)
		if(b[i]>max) max=b[i];

	if(max==1) printf("NO");
	else
	{
		printf("%d\n",max);
		for(i=0;i<t;i++)
			if(b[i]==max) printf("%s\n",gram[i]);
	}
}
int main()
{
	char a[500],now[5],gram[250][5];
	int n,num[250]={0},i,no,k,j;
	scanf("%d",&n);
	scanf("%s",a);
	for(i=0,no=0;a[i+n-1]!='\0';i++)
	{
		for(k=0;k<n;k++)
		{
			now[k]=a[i+k];
		}
		now[k]='\0';
		if(no==0)
		{
			strcpy(gram[no],now);
			num[no]++;
			no++;
		}
		else
		{
		int flag=0;
		for(j=0;j<no;j++)
		{
			if(strcmp(gram[j],now)==0)
			{
				num[j]++;
				flag=1;
			}
		}
		if(flag==0)
		{
			strcpy(gram[no],now);
			num[no]++;
			no++;
		}
		}
	}
	int max=0;
	for(i=0;i<no;i++)
	{
		if(num[i]>1)
		{
			if(num[i]>max)
			{
				max=num[i];
			}
		}
	}
	if(max==0)
	{
		printf("NO\n");
	}
	else
	{
		printf("%d\n",max);
		for(i=0;i<no;i++)
		{
			if(num[i]==max)
			{
				printf("%s\n",gram[i]);
			}
		}
	}
	return 0;
}
void main()
{
	char a[400],b[400][6];
	int k,i,j=0,n,m=1,q=0;
	char *p;
	char (*w)[6];
	scanf("%d",&k);
	scanf("%s",a);
	n=strlen(a);
	p=a;
	w=b;
	for(i=0;i<n-k+1;i++)
	{
		for(j=0;j<k;j++)
		{
			*(*(w+i)+j)=*(p+i+j);

		}
		*(*(w+i)+j)='\0';
	}
	for(j=0;j<n-k;j++)
	{	m=0;
		for(i=j;i<n-k+1;i++)
		{
			if(strcmp(*(w+j),*(w+i))==0)m=m+1;
		}
		if(m>q)q=m;
		

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

for(i=0;i+n<=l;i++)if(b[i]>max)max=b[i];

if(max<=1)printf("NO\n",max);
else {printf("%d\n",max);
for(i=0;i+n<=l;i++)
if(b[i]==max&&d[i]==0)puts(c[i]);

}


}
void main()
{
	int count[500]={0};
	int l=0,max=0,n,len,i,j,k,check,flag;
	char str[500];
	char ans[500][500];
	scanf("%d%s",&n,str);
	len=strlen(str);
	for (i=0;i<=len-n;i++)
	{
		check=0;
		for (j=1;j<=l;j++)
		{
			flag=0;
			for (k=0;k<n;k++)
			  if (ans[j][k]!=str[i+k])
				{flag=1;break;}
			if (flag==0) 
			{
				check=1;count[j]++;
				if (count[j]>max) max=count[j];
				break;
			}
		}
		if (check==0)
			{
				l++;
				for (j=0;j<n;j++)
					ans[l][j]=str[i+j];
				count[l]=1;
			}
	}
	if (max==0) printf("NO\n");
	else
	{
		printf("%d\n",max);
		for (i=1;i<=l;i++)
		{
			if (count[i]==max) 
			{
				for (j=0;j<n;j++)
					printf("%c",ans[i][j]);
				printf("\n");
			}
		}
	}
}
char a[500],b[500][5];
int i,j,k,l,c[500]={0},max,n;
int main()
{
	scanf("%d%s",&n,a);
	l=strlen(a);
	for(i=0;i<=l-n;i++)
		for(j=i,k=0;j<n+i;j++,k++)
			b[i][k]=a[j];
    for(i=0;i<=l-n;i++)
		for(j=i;j<=l-n;j++)
			if(strcmp(b[i],b[j])==0)
				c[i]+=1;
    for(max=c[0],i=1;i<=l-n;i++)
		max=(max>=c[i])?max:c[i];
	if(max==1)printf("NO\n");
	else
    {printf("%d\n",max);
	for(i=0;i<=l-n;i++)
		if(c[i]==max)printf("%s\n",b[i]);
	}
	return 0;
}
void main()
{
char a[501],c[500][6];
int n,i,k,j,m;
scanf("%d%s",&n,a);
k=strlen(a);
int b[500];
for(i=0;i<=k-n;i++)
{for(j=0;j<n;j++)c[i][j]=a[i+j];
c[i][n]=0;
}
for(i=0;i<k-n;i++)
{b[i]=1;
for(j=i+1;j<=k-n;j++)
{if(strcmp(c[i],c[j])==0)b[i]++;}
}
m=b[0];
for(i=1;i<k-n;i++)
{if(b[i]>m)m=b[i];}
if(m==1)printf("NO");
else {printf("%d\n",m);
for(i=0;i<k-n;i++)
{if(b[i]==m)printf("%s\n",c[i]);}
}
}
int main()
{
	int n, len, i, j, a[555], max = -1;
	char ch[555], ch1[555][5];
	for (i = 0; i < 555; i++)
		a[i] = 1;
	cin >> n;
	cin.get();
	cin.getline(ch,555);
	len = strlen(ch);
	for (i = 0; i < 555; i++)
	{
		for (j = 0; j < 4; j++)
			ch1[i][j] = '#';
		ch1[i][4] = 0;
	}
	for (i = 0; i < len - n + 1; i++)
	{
		for (j = i; j < i + n; j++)
		{
			ch1[i][j-i] = ch[j];
		}
	}
	for (i = 0; i < len - n + 1; i++)
	{
		for (j = i + 1; j < len - n + 1; j++)
		{
			if (strcmp(ch1[i], ch1[j]) == 0)
				a[i]++;
		}
	}
	for (i = 0; i < len - n + 1; i++)
	{
		if (max < a[i])
			max = a[i];
	}
	for (i = 0; i < len - n + 1; i++)
	{
		if (max < a[i])
			max = a[i];
	}
	if (max>1)
	{
		cout << max << endl;
		for (i = 0; i < len - n + 1; i++)
		{
			if (a[i] == max)
			{
				for (j = 0; j < n-1; j++)
					cout << ch1[i][j];
				if (j==n-1)
					cout << ch1[i][j] << endl;
			}

		}
	}
	else
		cout << "NO";
	
	return 0;
}
void main()
{int n,flag,i,max;
 char x[501],*p,*q;
 int y[500],*o,*r;
 for (o=y;o<y+499;o++)
	 *o=1;
 scanf("%d\n",&n);
 gets(x);
 for (p=x,o=y;p<x+strlen(x);p++,o++)
	 {if (*o==-1)
         continue;
	  for (q=p+1,r=o+1;q<=x+strlen(x)-n;q++,r++)
	     {for (flag=1,i=0;i<n;i++)
		      if (*(p+i)!=*(q+i))
			  {flag=0;break;}
		  if (flag==1)
		      {*o=*o+1;*(r)=-1;}
	     }
     }
 for (max=0,o=y;o<y+strlen(x)-n;o++)
	 if (*o>max)
		 max=*o;
 if (max==1)
	 printf("NO");
 else {printf("%d\n",max);
      for (p=x,o=y;o<y+strlen(x)-n;o++,p++)
	     if (*o==max)
		     {for (i=0;i<n;i++)
			      printf("%c",*(p+i));
	           printf("\n");}}
}
/**  
* @file   homework.cpp  
* @author ??? 
* @date   2013-12-12 
* @description 
*          ??????: n-gram????    
*/ 
int main()
{
	int a ;
	char b[502] ;
	cin >> a;
	cin.get();
	cin.getline(b,502);
	int len = strlen(b);
	char c[502][4] ;
	int i ,j , k;
	for( i = 0 ; i <= len - a ; i++)                 //????
	{
		for( j = 0 ; j < a ; j++)
		{
			c[i][j] = b[i+j] ;
		}
	}
	int d[502] = {0};                                //????
	for( i = 0 ; i < len -a ;i++)
	{
		for( j = i+1 ; j <= len -a ; j++)
		{
			for( k = 0 ; k < a ; k++)
			{
				if(c[i][k] != c[j][k])
					break;
			}
			if(k == a)
				d[i]++;
		}
	}
	int max=INT_MIN;
	for(i = 0 ; i < len -a ; i++)
	{
		if(d[i] >= max)
			max = d[i];
	}
	if(max >= 1)
	{
	    cout << max +1 << endl;
		for(i = 0 ; i < len -a ; i++)
	   {
		    if(d[i] == max)
		   {
			    for(j = 0 ; j < a ; j++)
				     cout << c[i][j] ;
			    cout << endl ;
		   }
	    }
	}
	else
		cout << "NO" ;

	return 0;
}
int main()
{
	char str[600];
	int n, i, j, length, len[600] = { 0 }, log, num, sum, max;
	char a[600][7] = { { '\0' } }, ch[600][10] = { { '\0' } };
	scanf("%d\n",&n);
	gets(str);
	
	length=strlen(str);
	for(i=0;i<=length;i++)
	{
			for(j=0;j<n;j++)
			{
				a[i][j]=str[i+j];
			}
	}
	log=i-1;
	strcpy(ch[0],a[0]);
	num=0;
	len[0]=1;
	for(i=1;i<=log;i++)
	{
		for(j=0,sum=0;j<=num;j++)
		{
			if(strcmp(ch[j],a[i])==0)
			{
				len[j]++;
				sum=1;
			}
		}
		if(sum!=1)
		{
			num++;
			len[num]=1;
			strcpy(ch[num],a[i]);
		}
	}
	max=len[0];
	for(i=1;i<=num;i++)
	{
		if(max<len[i])
		{
			max=len[i];
		}
	}
	if(max<=1)
	{
		printf("NO");
	}else{
	printf("%d\n",max);
	for(i=0;i<=log;i++)
	{
		if(len[i]==max)
		{
			printf("%s\n",ch[i]);
		}
	}
	}
	return 0;
}
//******************************
//????n-gram????
//??????
//???1300012712
//???2013?12?11?
//******************************
int main()
{
	char str[520];
	int num[520] = {0};
	char *pc;
	int i, j, k, l, m, n, len;
	cin >> n;
	cin >> str;
	pc = str;  // ???????????
	len = strlen(str);
	int max = -1;
	for (i = 0; i <= len - n; i++)  // ??0?????n???????????
	{
		for (j = i; j <= len - n; j++)  // ???????? ???i????????
		{
			for (k = 0; k < n; k++)
			{
				if (*(pc + i + k) != * (pc + j + k)) break;  // ????????????????? ????
			}
			if (k == n) num[i]++;  // ????????????????
		}
		if (num[i] > max) max = num[i];   // ?????????
	}
	l = 0;
	if (max <= 1)  // ???????????NO
	{
		cout << "NO" << endl;
		return 0;
	}
	cout << max << endl; 
	for (i = 0; i < len - n; i++) // ????????????????? ??????????
	{
		if (num[i] == max) 
		{
			for (j = 0; j < n; j++)
			{
				cout << *(pc + i + j);
			}
			cout << endl;	
		}
	}
	return 0;
}
void main()
{char s[502],z[502][5]={'\0'};int b[502]={0},i,j,k,l,n,p,f,m=1,S=1;scanf("%d\n",&n);gets(s);l=strlen(s);

for(i=0;i<=l-n;i++){if(b[i])continue;
	p=0;for(j=0;j<=l-n;j++){if(b[j])continue;
		f=1;for(k=0;k<n;k++)if(s[i+k]!=s[j+k]){f=0;break;} if(f){p++;b[j]=1;}}
if(p>m){m=p;for(k=0;k<n;k++){z[1][k]=s[i+k];}z[1][n]='\0';S=2;}
else if(p==m)
{for(k=0;k<n;k++){z[S][k]=s[i+k];}z[S][n]='\0';S++;}}
if(m==1)printf("NO\n");
else{
printf("%d\n",m);
for(i=1;i<S;i++)printf("%s\n",z[i]);
}}
int main()
{   
    int n=0,i=0,j=0,k=0;
    char str[500]={'0'};
    scanf("%d",&n);
    scanf("%s",str);
    int len=0,max=0,num[500]={0},a[100]={0};
    len=strlen(str);
    for(i=0;i<len-n+1;i++)
    {
                      for(j=i+1;j<len-n+1;j++)
                      {
                                        for(k=0;k<n;)
                                        {
                                                     if(str[i+k]==str[j+k]) k++;
                                                     else break;
                                        }
                                        if(k==n) num[i]++;
                      } 
    }
    k=0;
    for(i=0;i<len-n+1;i++)
    {
                          if(num[i]>max)
                          {
                                        k=0;
                                        memset(a,0,sizeof(a));
                                        max=num[i];
                                        a[k]=i;
                                        k++; 
                          }
                          else if(num[i]==max)
                          {
                               a[k]=i;
                               k++;
                          } 
    }
    if(num[a[0]]==0) printf("NO\n");
    else
    {
        printf("%d\n",num[a[0]]+1);
        i=0;
        do
        {
                             for(j=a[i];j<a[i]+n-1;j++)
                                                     printf("%c",str[j]);
                             printf("%c\n",str[j]);
                             i++;
        } while(a[i]!=0);
    }              
    return 0;
}
int main(){
    int n,c[500],max=0,z;
    scanf("%d",&n);
    char a[500];
    scanf("%s",a);
    for(int i=0;i<=strlen(a)-n;i++){
            c[i]=1;
           for(int j=i+1;j<=strlen(a)-n;j++){
                   z=1;
                   for(int k=0;k<n;k++){
                   if(a[i+k]!=a[j+k])
                   z=0;
                   }
                   if(z==1)
                     c[i]++;
           }
           if(c[i]>max)
             max=c[i];
    }
    if(max==1)
    printf("NO");
    else{
    printf("%d\n",max);
    for(int i=0;i<=strlen(a)-n;i++){
            if(c[i]==max){
                          for(int k=0;k<n-1;k++){
                                  printf("%c",a[i+k]);
                                  }
                          printf("%c\n",a[i+n-1]);
                          }
            }
}
    return 0;
}
int main()
{
	int i,j,k=0,m,n,sum[500]={0};
	char b[600],a[510][5],c[5];
	scanf("%d",&n);
	getchar();
	gets(b);
	m=strlen(b);
	for(i=0;i<=m-n;i++)
	{
		for(j=i;j<i+n;j++)
		{
			a[k][j-i]=b[j];
		}
		a[k][j]='\0';
		k+=1;
	}
	for(i=0;i<k;i++)
	{
		for(j=i;j<k;j++)
		{
			for(m=0;m<n;m++)
			{
				if(a[i][m]!=a[j][m])
				{
					m=0;
					break;
				}
			}
			if(m!=0)
			{
				sum[i]+=1;
			}
		}
	}
	for(i=0;i<k-1;i++)
	{
		for(j=0;j<k-i-1;j++)
		{
			if(sum[j]<sum[j+1])
			{
				m=sum[j+1];
				sum[j+1]=sum[j];
				sum[j]=m;
				strcpy(c,a[j]);
				strcpy(a[j],a[j+1]);
				strcpy(a[j+1],c);
			}
		}
	}
	if(sum[0]!=1)
	{
		printf("%d\n",sum[0]);
		for(i=0;i<k;i++)
		{
			if(sum[i]<sum[0])
			{
				break;
			}
			else
			{
				printf("%s\n",a[i]);
			}
		}
	}
	else
	{
		printf("NO");
	}
	return 0;
}