semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	char str[500];
	int count, s;
	cin >> str;
	for (int i = 2; i <= strlen(str); i++)   //??????????
	{
		for (int j = 0; j < strlen(str) - i + 1; j++)  //??????????????????i
		{
			count = 0;    //???????0
			s = 2 * j + i - 1;
			for (int k = j; k < j + i; k++)   //???????
			{
				   
			
				if (str[k] == str[s - k])
				{
					count++;
				}
			}
			if (i % 2 == 0)
			{
			    if (count == i)
				{
				    for (int p = j; p < j + i; p++)
					{
					    cout << str[p];
					}
				    cout << endl;
				}
			}
			if (i % 2 == 1)
			{
                if (count == i - 1)
				{
				    for (int q = j; q < j + i; q++)
					{
					    cout << str[q];
					}
				    cout << endl;
				}
			}
		}
	} 

	return 0;
}
int main()
{
	char a[505];
	int i,j,k;
	gets(a);
	for(i=2;i<strlen(a);i++)
		for(j=0;j<=strlen(a)-i;j++)
		{
			for(k=0;k<i;k++)
				if(a[k+j]!=a[i+j-1-k]) break;
			if(k==i)
			{
				for(k=j;k<i+j;k++)
					printf("%c",a[k]);
				printf("\n");
			}
		}
	return 0;
}
int panduan(char *c,int l)
{
	int f=0,t=0,i;
	if(l%2==0)
	{
		for(i=0;i<=(l/2)-1;i++)
		{
			if(*(c+i)==*(c+l-1-i))
				f+=1;
		}
		if(f==l/2)
			t=1;
	}
	else
	{   f=0;
		for(i=0;i<=(l-3)/2;i++)
		{
			if(*(c+i)==*(c+l-1-i))
				f+=1;
		}
		if(f==(l-1)/2)
			t=1;
	}
	return(t);
}
int main()
{
	int n,*p,i,l,f,k;
	char c[100];
	int panduan(char *c,int l);
	gets(c);
	n=strlen(c);
	for(i=2;i<=n;i++)
	{
		for(l=0;l<=n-1;l++)
		{
			p=&c[l];
			f=panduan(p,i);
			if(f==1)
			{
				for(k=l;k<=l+i-2;k++)
				{
					printf("%c",c[k]);
				}
				printf("%c\n",c[l+i-1]);
			}
		}
	}
	return 0;
}
void huiwen(int i, int l, char a[501])
{
	int j, k, flag = 0;
	for (j = 0; j <= l - i; j ++)
	{
		flag = 1;
		for (k = 0; k <= i - 1; k ++)
		{
			if (a[j+k] != a[j+i-1-k])
				flag = 0;
		}
		if (flag)
		{
			for (k = 0; k <= i - 1; k ++)
				cout << a[j+k];
			cout << endl;
		}
	}
}
int main()
{
	char a[501];
	cin >> a;
	int i, l;
	l = strlen(a);
	for (i = 2; i <= l; i ++)
	{
		huiwen(i, l, a);
	}
	return 0;
}
//**********************************************
//**???????******************************
//**?????? 1000012741*********************
//**???2010?11?26?************************
//**********************************************
void palin ( char str[], int m)                             //??palin????????????????????str???????m?????
{
	int i, j, p;                                            //??i??????j?p??????
	for (i = 0; str[i+1] != '\0'; i++)                      //??????????
	{
			if ( m % 2 == 0 )                               //?????????
			{
				j = i;                                      //?????????
				p = i + 1;
			}
			else                                            //?????????
			{
				j = i - 1;                                  //?????????
				p = i + 1;
			}
			while ( str[j] == str[p] && j >= 0 && str[p] != '\0' )  //???????
			{
				j--;                                        //???????????????
				p++;
				if ( p != (i+1) && ( ( p - j - 1 ) == m ) )         //?????????????
				{
					for ( int k = j + 1; k < p; k++)        //?????
						cout << str[k];
					cout << endl;
				}
			}		
	}
	return;                                                 //palin????
}
int main()                                                  //?????
{
	char str[503];                                          //?????str
	int m, l;                                               //??m????????l????????
	cin >> str;                                             //?????
	l = strlen(str);                                        //???????
	for ( m = 2; m <= l; m = m + 1 )                        //???????????
	{
		palin (str, m);                                     //??palin??
	}	
	return 0;                                               //?????
}
//**********************************************
int main()
{
	char str[502]={0};
	int i=1,j,n;
	while(true)
	{
		str[i]=getchar();
		if(str[i]=='\n')
			break;
		i++;
	}
	n=i-1;
	int z=0,a,b,c;
	for(j=1;j<=n;j=j+2)
	{
		for(i=1;i<=n;i++)
		{
			z=0;
			a=i;
			b=j;
			while((a+b)>a&&(a+b)<=n)
			{
				if(str[a]==str[a+b])
				z=z+1;
				a++;
				b=b-2;
			}
			if(z==(j+1)/2)
			{
				for(c=i;c<=i+j;c++)
					cout<<str[c];
				cout<<endl;
			}

		}
	}		
		return 0;
}
int p=1;
int f(char str[500],int lens);
int main()
{
	char str[500],lens;
	cin.getline(str,500);
	lens=strlen(str);
	f(str,lens);
	return 0;
}
int f(char str[500],int lens)
{
	int i,j,flag=0,k=p;
	for(i=0;i<lens;i++)
	{
		while(str[i-k+1]==str[i+k]&&(i-k+1)>=0&&i+k<lens&&k>0)
		k--;
		if(k==0)
		{
			flag=1;
			for(j=i-p+1;j<=i+p;j++)
				cout<<str[j];
			cout<<endl;
		}
		k=p;
	}
	p++;
	if(flag==1)
		f(str,lens);
	else
		return 0;
}
int main()
{
  int i,k=0,j,t,p=0;
	char a[501];
   gets(a);
   for(i=0;a[i]!='\0';i++)
	   k++;
   for(i=2;i<=k;i++)
	  { for(j=1;j+i-1<=k;j++)
		  { p=0;
			  for(t=j;t<=j+i-1;t++)
		   { if(a[t-1]!=a[j+j+i-t-2]) p=1; }
		   if(p==0)
		   { for(t=j;t<=j+i-1;t++) printf("%c",a[t-1]);printf("\n");}
          }
      }
   
   return 0;

              




}
main()
{
      char a[800];
      int len,num=0;
      gets(a);
      len=strlen(a);
      for(int i=1;i<len;i++)
      {
              for(int j=0;j<len-i;j++)
              {
                     for(int k=j;k<=(j+i/2);k++)
                     {
                             if(a[k]==a[j+j-k+i])
                                num++;
                             else
                             {
                                 num=0;
                                 break;
                             }
                     }
                     if(num==i/2+1)
                     {
                                   for(int k=j;k<=i+j;k++)
                                    printf("%c",a[k]);
                                   printf("\n");
                     }
                     num=0;
              }
      }
}
int main()
{
	int judge(char ch[]);
	char str[501],sub[501];
	int len,start,end,i,l;
	gets(str);
	len=strlen(str);
	for(l=2;l<=len;l++) //????2???????
	{
		for(start=0,end=start+l;end<=len;start++,end++) //?start?????????end????
		{
			for(i=start;i<end;i++)
			{
				sub[i-start]=str[i]; //?????
			}
			sub[end-start]='\0';
            if(judge(sub)==1)//??????????????
			{
				puts(sub);
				printf("\n");
			}
		}
	}
	return 0;
}

int judge(char ch[])
{
	int begin,finish,lenth;
	lenth=strlen(ch);
	for(begin=0,finish=lenth-1;begin<finish;begin++,finish--)
	{
		if(ch[begin]!=ch[finish]) //???????????????????????????????????????begin?=finish???
		{
			return(0); //???????????????????0?
		}
	}
	return(1);//???????0?????????????1?
}
char ls[MAX];
int pafind(int start,int len);


int main(){
	int len;
	cin>>ls;
	len=strlen(ls);
	for(int ll=2;ll<=len;ll++){
		for(int i=0;i<=len-ll;i++){
			if(pafind(i,ll)){
				for(int j=i;j<i+ll;j++) cout<<ls[j];
				cout<<endl;
			}
		}
	}
	return 0;
}
int pafind(int start,int len){
	int maxl=len/2,ok=1;
	for(int i=start;i<start+maxl;i++){
		if(ls[i]!=ls[start+len-1-(i-start)]){
 			ok=0;
			break;
		}
	}
	return ok;
}
int ju(char str[],int j,int k)
{
	int p,m=1;
	for(p=k;p<=k+j-1;p++)
	{
		if(str[p]!=str[2*k+j-1-p])
		{
			m=0;
		}
	}
	return m;
}
void main()
{
	char str[501];
	char c;
	int i=1,j,k,l;
	while((c=getchar())!='\n')
	{
		str[i]=c;
		i++;
	}
	i--;
	for(j=2;j<=i;j++)
	{
		for(k=1;k<=i-1;k++)
		{
			if(ju(str,j,k)==1)
			{
				for(l=k;l<=k+j-1;l++)
					printf("%c",str[l]);
				printf("\n");
			}
		}
	}
}
int main()
{
	char s[550]={0};
	int i,num,j,k;
	for(i=0;i<550;i++)
	{
		scanf("%c", &s[i]);
		if(s[i]=='\n')
		{
			s[i]=0;
			num=i-1;
			break;
		}
	}
	char *p1,*p2;
	for(i=2;i<=num+1;i++)
	{
		p1=(char *)malloc(sizeof(char)*(i+1));
		p2=(char *)malloc(sizeof(char)*(i+1));
		for(j=0;j<=num+1-i;j++)
		{
			for(k=j;k<=j+i-1;k++)
			{
				*(p1+k-j)=s[k];
				*(p2+k-j)=s[j+j+i-1-k];
			}
			*(p1+i)='\0';
			*(p2+i)='\0';
			if(strcmp(p1,p2)==0) printf("%s\n", p1);
		}
		free(p1);
		free(p2);
	}
	return 0;
}
int main()
{
	char s[600];
	scanf("%s",s);
	int l=strlen(s);
	int i,j,k;
	int hw;
	for(i=2;i<=l;i++)  //???
	{
		if(i%2==0)   //????????
		{
			for(j=i/2-1;j<l-i/2;j++)  //?????
			{
				hw=1;    //?????
				for(k=1;k<=i/2;k++)
				{
					if(s[j-k+1]!=s[j+k])
					{
						hw=0;
						break;
					}
				}
				if(hw==1)
				{
					for(k=j-i/2+1;k<=j+i/2;k++)
					{
						printf("%c",s[k]);
					}
					printf("\n");
				}
			}
		}
		else
		if(i%2==1)  //bug1???????????
		{
			for(j=i/2;j<l-i/2-1;j++)
			{             //debug??????????????
				hw=1;
				for(k=1;k<=i/2;k++)
				{
					if(s[j-k]!=s[j+k])
					{
						hw=0;
						break;
					}
				}
				if(hw==1)//????????????
				{
					for(k=j-i/2;k<=j+i/2;j++)
					{
						printf("%c",s[k]);
					}
					printf("\n");
				}
			}
		}
	}
	return 0;
}
/*
 * palindrome substring.cpp
 *
 *  Created on: 2011-12-28
 *      Author: Administrator
 */
int main()
{
	char sen[510];int j,n,k,m,length;//????
	cin.getline(sen,510);
	length=strlen(sen);
	for(n=1;n<=length;n++)//?????????
		for(j=0;j<=length-1-n;j++)//?????????
		{
			m=j;
			k=j+n;
			while(k>=m&&sen[k]==sen[m])//???????
			{
				k--;m++;
			}
			if(k<=m)
			{
				for(k=j;k<=j+n;k++){cout<<sen[k];}cout<<endl;//????
			}
		}
	return 0;
}
int main()
{
	int m,n,h,i,j,k,l,length,mark;
	char str[100],x[100];
	gets(str);
	length=strlen(str);
	for(i=2;i<length;i++)
	{
		for(j=0;j<=(length-i);j++)
		{
			m=j;
			for(k=0;k<i;k++,j++)
			{
				x[k]=str[j];
			}
			mark=0;
			if(i%2==0)
			{
				for(l=0;l<(i/2);l++)
				{
					if(x[l]==x[(i-l-1)]) mark=mark+1;
					else break;
				}
				if(mark==(i/2))
				{
					for(h=0;h<i;h++)
					{
						if(h==(i-1)) printf("%c\n",x[h]);
						else printf("%c",x[h]);
					}
				}
			}
			if(i%2!=0)
			{
				for(l=0;l<(i/2);l++)
				{
					if(x[l]==x[(i-l-1)]) mark=mark+1;
					else break;
				}
				if(mark==(i/2))
				{
					for(h=0;h<i;h++)
					{
                        if(h==(i-1)) printf("%c\n",x[h]);
						else printf("%c",x[h]);
					}
				}
			}
			j=m;
		}
	}
	return 0;
}
main()
{
	char a[500];
	int i,j,k;
	gets(a);
	for(i=2;i<=strlen(a);i++)
	{
		for(j=0;j<strlen(a)+1-i;j++)
		{
			for(k=0;j+k<=j+i-k-1;k++)
			{
				if(a[j+k]!=a[j+i-k-1])
				break;
			}
			if(j+k>j+i-k-1)
			{
				for(k=0;k<i;k++)
				printf("%c",a[j+k]);
				printf("\n");
			}		
		}
	}
}
int main()
{
	char a[505],tem1[505],tem2[505],b[505][505];
	int len1,p=0,m=1,len[505],count[505];
	cin.getline(a,504,'\n');//?????
	len1=strlen(a)-1;//???????? 
	for(int i=1;i<=504;i++)
		count[i]=i;
	for(int i=0;i<=len1-1;i++)
	{
		for(int j=i+1;j<=len1;j++)//????????????b?
		{
			memset(tem1,'\0',sizeof(tem1));
			memset(tem2,'\0',sizeof(tem2));
			p=0;
			for(int k=i;k<=j;k++)
			{
				tem1[p]=a[k];
				p++;
			}
			p=0;
			for(int k=j;k>=i;k--)
			{
				tem2[p]=a[k];
				p++;
			}
			if(strcmp(tem1,tem2)==0)
			{
				strcpy(b[m],tem1);
				m++;
			}
		}
	}
	for(int i=1;i<=m-1;i++)//???????? ???
	{
		len[i]=strlen(b[i]);
	}
	for(int i=1;i<=m-2;i++)//????
		for(int j=1;j<=m-1-i;j++)
		{
			if(len[j]>len[j+1])
			{
				int f=len[j];
				len[j]=len[j+1];
				len[j+1]=f;
				int g=count[j];
				count[j]=count[j+1];
				count[j+1]=g;
			}
		}
	for(int i=1;i<=m-1;i++)//????? 
		cout<<b[count[i]]<<endl;
	return 0;
}
int main()
{
	char str[501];
	gets(str);

	int len=0;
	while(str[len])
		len++;
    int l=2;
	int i,j;
	char y;
	for(l=2;l<=len;l++)
    {
		i=0;
		for(i=0;i<len-l+1;i++)
        {
			y='y';
			for(j=i;j<l+i;j++)
				if(str[j]!=str[l+2*i-1-j])
					y='n';
			if(y=='y')
			{
				for(j=i;j<l+i;j++)
					printf("%c",str[j]);
                printf("\n");
			}
		}
	}


    return 0;
}
int main()
{
	char str[500]={0},result[500]={0};
	int i,j,sum,p,len,x;
	scanf("%s",str);
	len=strlen(str);
	for(i=1;i<=len;i++){//??
		for(j=0;j<=len-i;j++){//??
			x=-1;
			for(p=0;p<500;p++)
				result[p]='\0';
			for(p=j;p<i+j;p++){//??
				x++;
				result[x]=str[p];
			}
			sum=0;
			for(p=0;p<x+1;p++){
				if(result[p]!=result[x-p])
					break;
				else sum++;
			}
			if(sum==x+1&&strlen(result)!=1)
				printf("%s\n",result);
		}
	}
	return 0;
}
//***********************
//??????**
//???4.cpp**
//???2012.11.16**
//***********************

int main ()
{
	int i, j, n, k;
	char a[500];
	cin >> a;
	n = strlen(a);
    for (i = 2; i <= n; i ++)
	{
		for (j = 0; j <= n - i; j ++)
		{
			for (k = j; k <= j + i / 2; k ++)
			{
				if (a[k] == a[i + 2 * j - 1 - k])
					continue;
				else
					break;
			}
			if (k > j + i / 2)
			{
				for (k = j; k < j + i; k++)
					cout << a[k];
				cout << endl;
			}	
		}
	}
	return 0;
}
main()
{
    char s[500];
    int n,i,j=2,k,m;
    scanf("%s",s);
    n=strlen(s);
    for(;j<=n;j++)
    {
        if(j%2) m=(j+1)/2;
        else m=j/2;
        for(k=0;k<=n-j;k++)
        {
            for(i=k;i<=m+k-1;i++)
            {
                if(s[i]!=s[j+2*k-1-i]) break;
            }
            if(i==m+k)
            {
                for(i=k;i<=j+k-1;i++) printf("%c",s[i]);
                printf("\n");
            }
        }
    }
}
int main()
{
	int n,i,j,k,a,b,q,w=0;
	char s[500];
	scanf("%s",s);
	n=strlen(s);
	a=n/2;
	for(j=1;j<a+1;j++)
	{
		k=j;
		for(i=0;i<n-1;i++)
		{
			for(b=0;b<k;b++)
			{
				w=0;
				if(s[i+b]==s[i+2*k-b-1])
				{
					;
				}
				else
				{
					w=1;
					break;
				}
			}
			if(b==k)
			{
				for(q=0;q<j*2;q++)
				{
					printf("%c",s[i+q]);
				}
				printf("\n");
			}
		}

	}	
	return 0;
}
//********************************
//*???????   **
//*?????? 1200012827 **
//*???2012.11.18  **
//********************************
int main()              
{
    char str[500]={' '};              
    cin >> str;                       
    int len=strlen(str);
    int i,j,k;
    int m;
    float leap;
    for (i=2;i<=len;i++)               //?????????????????
    {
       if (i%2==0)  
	   {leap=0.5;}
       else 
	   {leap=0;}
       if (i==2)
       {
            for (j=0;j<=len-2;j++)        
            {
                if (str[j]==str[j+1])
                {
                    cout << str[j] << str[j+1] << endl;
                }
            }
        }
        else                        
        {
            for (j=0;j<=len-i;j++)        
            {
                m=1;
                for (k=j;k<j+(i-1)/2+leap;k++)           //??????????
                {
                    if (str[k]!=str[2*j+i-1-k])
                    {
                        m=0;
                        break;
                    }
                }
                if (m==1)                                //????????
                {
                    for (k=j;k<=j+i-1;k++)
                    {
                        cout << str[k];
                    }
                    cout << endl;
                }
            }
        }
    }
     return 0;
}
//*****************************
//*??? :????         *
//*??   :???             *
//*??   :2011?11?         *
//*****************************
void c(char []);
int main ()
{
	char a[501];
	cin.getline(a,501);
	c(a);
	return 0;
}
void c(char a[])
{
	int i, j, k, m, t = 0, g;
	m = strlen(a);
	for (i = 2; i <= m; i++)
	{
		for (j = 0; j < m; j++)
		{
			g = 1;
			for (k = 0; k <i; k++)
			{
				if (a[k + j] != a[j + i - 1 - k]) g = 0;
			}
			if (g == 1)
			{
				for (t = 0; t < i; t++)
				{
					if (t == i - 1)
						cout << a[t + j] << endl;
					else cout << a[t + j];
				}
			}
		}
	}
}
int main()
{
	char str[501];
	int i, j;
	cin >> str;
	for (j = 1; str[j] != '\0'; j++)
	{
		for (i = 0; str[i] != '\0'; i++)
		{
			for (int l = j, p = 0; l >= 1; p++, l--)
			{
				if (str[i + p] != str[i + l])
				{
					break;
				}
				if (l <= 2)
				{
					for (int k = i; k <= i + j; k++)
					{
						cout << str[k];
					}
					cout << endl;
					break;
				}
			}
		}
	}
	return 0;
}
int main()
 {
 char a[500];
 int m,i,q,k,p,n;
 for (i=0;i<500;i++)
 {
	 scanf("%c",&a[i]);
	 if (a[i]=='\n')
		 break;
 }
 n=i;
 for (m=2;m<=n;m++)
 {
	 for(i=0;i<n-m+1;i++)
	 {
		 for (q=0;q<m-1;q++)
		 {
			 if(a[i+q]!=a[i+m-1-q])
				 p=p+1;
		 }
		 if(p==0)
		 { for (k=i;k<i+m;k++)
			 {
				 printf("%c",a[k]);
			 }
		 printf("\n");
		 }
		 p=0;
	 }
 }
 return 0;
 }
int main()
{
    char in[501];
    char zi[501];
    cin.getline(in,500,'\n');
    int L,judge=1;
    L=strlen(in);
    for(int i=2;i<=L;i++)
      for(int j=0;j<=L-i;j++)
         {
            memset(zi,0,sizeof(zi));
            for(int k=j;k-j<i;k++)
                zi[k-j]=in[k];
            judge=1;
            for(int k=0;k<i/2;k++)
                if(zi[k]!=zi[i-k-1])  {judge=0; break;}
            if(judge==1)  cout<<zi<<endl;
         }
    return 0;
}
/**
 * ??????
 * ???1000012844
 * ???????
 **/


void checkSymmetry( char *, int, int );

int main()
{
	int start, lenth;
	char str[ 501 ];

	cin >> str;

	for ( lenth = 2; lenth <= strlen( str ); lenth++ )
	{
		for ( start = 0; start < strlen( str ) - lenth + 1; start++ )
		{
			checkSymmetry( str, start, start + lenth - 1 );
		}
	}

	return 0;
}

void checkSymmetry( char str[], int start, int end )
{
	int i;
	for ( i = 0; i <= ( end - start ) / 2; i++ )
	{
		if ( str[ start + i ] != str[ end - i ] )
		{
			break;
		}
	}
	if ( i > ( end - start ) / 2 )
	{
		for ( i = start; i <= end; i++ )
		{
			cout << str[ i ];
		}
	cout << endl;
	}
}
int main()
{
	char c1[600],c2[600];
	int i,j,k,l1;
	scanf("%s",c1);
	l1=strlen(c1);
	for(i=2;i<=l1;i++)
	{
		for(j=0;j<=l1-i;j++)
		{
			for(k=0;k<600;k++)
			{
				c2[k]=0;
			}
			for(k=0;k<i;k++)
			{
				c2[k]=c1[j+k];
			}
			
			for(k=0;k<i/2;k++)
			{
				if(c2[k]!=c2[i-1-k]) break;
			}
			if(k==i/2) printf("%s\n",c2);
		}
	}
	return 0;
}
void print(int n1,int n2);
char s[500],z[500][250];
int main()
{

	gets(s);
	int h,a,b,c,d;
	h=strlen(s);
	for(a=0;a<h-1;a++)
	{	if(s[a]==s[a+1])
		{	z[a][a+1]=1;
	        print(a,a+1);
			 printf("\n");
		}
	    z[a][a]=1;
    }
	z[h-1][h-1]=1;
	for(d=2;d<h;d++)
		for(b=0;b<h-d;b++)
		{	c=b+d;
		if((z[b+1][c-1]==1)&&(s[b]==s[c]))
		{  z[b][c]=1;
		   print(b,c);
		   printf("\n");
		}
		}
    return 0;

}
void print(int n1,int n2)
{
	while(n1<=n2)
	{	printf("%c",s[n1]);
		n1++;
	}
}
int main()
{
	char a[510]={0};
	int i, j, k, num, count;
	for(i=0;i<510;i++)
	{
		scanf("%c", &a[i]);
		if(a[i]=='\n')
		{
			a[i]=0;
		    num=i;
		    break;
		}
	}
	for(i=2;i<=num;i++)
	{
		for(j=0;j<=num-i;j++)
		{
			count=0;
			for(k=0;k<i;k++)
			{
				if(a[j+k]==a[j+i-k-1]) count+=1;
			}
			if(count==i)
			{
				for(k=j;k<j+i;k++)
				{
					printf("%c", a[k]);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
int main()
{
    int b,i,m,n,x,y=0;
    char a[500];
    for(i=0;i<500;i++)
  {  scanf("%c",&a[i]);
  if(a[i]=='\n')
  break;}
                    for(n=2;n<=i;n++)
                    {
                                     for(m=0;m<=i-n;m++)
  {b=m;
                                    for(x=0;x<n/2;x++)
                                  {  if(a[m+x]==a[m+n-1-x])
                                    {y=0;}
                                    else
                                    {y=1;
                                    break;}}
                                    if(y==0)
                                    {for(b=m;b<m+n;b++)
                                    printf("%c",a[b]);}
printf("\n");
                                    x=0;}m=0;}
                                    return 0;}
int main()
{
	char str[501];
	int i , j , k ;
	int lenth , l , flag;
	l = 2; flag = 1;
	gets(str);
	lenth = strlen(str);
	for(l = 2 ; l <= lenth - 1 ; l++)
		for(i = 0 ; i <=  lenth - l ; i ++)
		{
			if(str[i] == str[i + l - 1])
			{
				for(j = i,k = i + l - 1; j < k ; j ++, k--)
				{	
					if(str[j] != str[k])
					{
						flag = 0;
						break;
					}
				}
				if(flag == 1)
				{
					for(j = i ; j <= i + l - 1; j ++)
					printf("%c",str[j]);
					printf("\n");
				}
				flag = 1;
			}
		}
	return 0;
}
int main()
{
	char a[500];//??????
	cin.getline(a,500);//?????
	int i,j,k,m,l,s;
	l=strlen(a);//???????
	for(i=1;i<=l-1;i++)
	{
		for(j=0;j<=l-1-i;j++)
		{
			for(k=0,s=0;k<(i+1)/2;k++)
			{
				if(a[j+k]==a[j+i-k])s=0;//????j+i??????????????s=0
				else {s=s+1;break;}//???s=s+1,????
			}
			if(s==0)//??s=0
			{
				for(m=j;m<=j+i;m++)
					cout<<a[m];//??????
				cout<<endl;
			}
		}
	}
	return 0;
}
int main(){
	int len,len2,start,end,judge,i,p;
	char input[500],sample[500];
	gets(input);
	len=strlen(input);
	for(len2=2;len2<=len;len2++){
		for(start=0;start<=len-len2;start++){
			judge=1;
			end=start+len2-1;
			for(i=start;i<=end;i++){if(input[i]!=input[end+start-i]){judge=0;}}
			if(judge==1){
				for(i=start;i<=end;i++){printf("%c",input[i]);}
				printf("\n");			
			}}}
return 0;
}
int son(char *a,int n)
{
	int i;
	for(i=0;i<n/2;i++)
	{
	  if(a[i]!=a[n-i-1])return 0;
	}
	for(i=0;i<n-1;i++)cout<<a[i];
	cout<<a[n-1]<<endl;
	return 0;
}
int main()
{
	char a[500];
	cin>>a;
	int n;
	n=strlen(a);
	for(int i=2;i<=n;i++)
	{
	 for(int j=0;j<n-i+1;j++)
	 {
		 son(&a[j],i);
	 }
	}
	return 0;
}
int main()
{
    char str[501];
    int i, j, k, l = 0, length, t1, t2, t;
    int a[501] = {0}, b[501] = {0};
    int leng[501] = {0};
    cin.getline(str, 501);
    length = strlen(str);
    for(i = 0; i < length; i++)
    {
          for(j = i + 1; j <length; j++)
          {
                if(str[i] == str[j])
                {
                          for(k = i + 1; k <= (j + i) / 2; k++)
                          {
                                if(str[k] == str[i + j - k])
                                {
                                      continue;
                                }
                                else
                                      break;
                          }
                          if(k - 1 == (j + i) / 2)
                          {
                               a[l] = i;
                               b[l] = j;
                               leng[l] = j - i;
                               l++;
                          }
                }
          }
    }
    for(i = 0; i < l -1; i++)
    {
          for(j = 0; j < l - i - 1; j++)
          {
                if(leng[j] > leng[j + 1])
                {
                           t1 = b[j + 1];
                           b[j + 1] = b[j];
                           b[j] = t1;
                           t2 = a[j + 1];
                           a[j + 1] = a[j];
                           a[j] = t2; 
                           t = leng[j +1];
                           leng[j+1] = leng[j];
                           leng[j] = t;
                }
          }
    }
    for(i = 0; i < l; i++)
    {
          while(a[i] <= b[i])
          {
                     cout << str[a[i]];
                     a[i]++;
          }
          cout << endl;
    }
    return 0;
}
int main()
{
	char a[500];
	cin>>a;
	int k=strlen(a);
	int b[100]={0};
	int c[500]={0};//?????????????????????????
	int n1=0;
	int n2=0;
	for(int l=2;l<=k;l=l+2)
	{
		for(int i=0;i<k-l+1;i++)
		{
			int time=1;
			for(int j=0;j<=(l-2)/2;j++)
			{
				if(a[i+j]!=a[i+l-1-j])
				{
					time=0;
					break;
				}
			}
			if(time==1)
			{
              b[n1]=i;//???????????????????????????
			  n1++;
			  c[n2]=l;
			  n2++;

			}
		}
	}
	for(int i=0;i<n1;i++)//??????????
	{
		for(int j=0;j<c[i];j++)
		{
			cout<<a[b[i]+j];
		}
		cout<<endl;
	}
	
	return 0;

}
int main()
{
	char word[SIZE];
	int i,j,k,count,length;
	gets(word);
	length=strlen(word);
	for(i=2;i<=length;i++)
	{
		for(j=0;j<length-i+1;j++)
		{
			count=0;
			for(k=0;k<i;k++)
			{
				if(word[j+k]==word[j+i-1-k])
				{
					count++;
				}
			}
			if(count==i)
			{
				for(k=0;k<i;k++)
				{
					printf("%c",word[j+k]);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
int main()
{
	char str[501];
	int l;
	int cnt;

	cin >> str;
	l = strlen(str);
	for (int i = 2; i <= l; i++)
		for (int j = 0; j <= l - i; j++)
		{
			cnt = 0;
			for (int k = 0; k <= i - 1; k++)
				if (str[j + k] == str[j + i - 1 - k])
					cnt++;
			if (cnt == i)
			{
				for (int k = j; k <= j + i - 2; k++)
					cout << str[k];
				cout << str[j + i - 1] << endl;
			}
		}
	return 0;
}