semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int fun(int a[500],int l)
{
    int i;
    int j=0;
    for(i=0;i<l;i++)
        if(a[i]!=a[l-i-1])
        {
            j=1;
            return 0;
        }
    if(j==0)
    {
        for(i=0;i<l;i++)
            printf("%c",a[i]);
        printf("\n");
        return 0;
    }


}

main()
{
    char s[500];
    int s1[500];
    int i,l,j,k;
    scanf("%s",s);
    l=strlen(s);
    for(i=2;i<=l;i++)
    {
        for(j=0;j<l-i+1;j++)
        {
            for(k=0;k<i;k++)
                s1[k]=s[k+j];
            fun(s1,i);
        }

    }

}
char a[max];
char b[251],c[251];
void panduan(int i)
{
	int k, l;
	if (2 * i > strlen(a))return;
	for (int j = 0; 2 * i + j <= strlen(a); j++)
	{
		for ( k = 0; k < i; k++)b[k] = a[j + k];
		b[k] = '\0';
		for (l = 0; l < i; l++)c[l] = a[j + i * 2 - 1 - l];
		c[l] = '\0';
		if (strcmp(b, c) == 0){
			cout << b;
			for (int x = strlen(c) - 1; x >= 0; x--)cout << c[x];
			cout << endl;
		}

	}
	panduan(i + 1);
}
int main()
{
	cin >> a;
	panduan(1);
	
}
int main()
{
char c[501];
int a,i,j,m,n;
gets(c);
n=strlen(c);
for(m=2;m<=n;m++)
{
for(i=0;i<=n-m;i++)
{
a=0;
for(j=i;j<m+i;j++)
{
if(c[j]!=c[m+i-j+i-1])
{a=1;break;}
}
if(a==0)
{
for(j=i;j<m+i;j++)
printf("%c",c[j]);
printf("\n");
}
}
}
return 0;
}
int main()
{
	char a[500]={0};
	cin>>a;
	int len=0;
	for (int i=0;a[i]!=0;i++)
		len++;     //???????
	int res=0;
	for (int k=1;k<len;k++)
		for (int i=0;i<len-k;i++)
		{
			for (int p=0;p<k;p++)
			{
				if (a[i+k]==0)
				{
					res++;
					break;
				}
				if (a[i+p]!=a[i+k-p])
				{
					res++;
					break;      //?i~i+k??????P????P????????++???
				}
			}
			if (res==0)   //?????0??????
			{
				for (int j=i;j<=i+k;j++)
					cout<<a[j];
				cout<<endl;
			}
			res=0;
		}

	
	return 0;
}
int main()
{
	char c[500],d[500];
	int f(char d[]),n,i,j,k,l;
	scanf("%s",c);
	n=strlen(c);
	for(i=2;i<=n;i++)
	{
		for(j=0;j<n+1-i;j++)
		{
			for(k=0;k<500;k++) d[k]='\0';
			for(k=j;k<j+i;k++)
			{
				d[k-j]=c[k];
			}
			if(f(d)==1) printf("%s\n",d);
		}
	}
	scanf("%d",&l);
	return 0;
}
int f(char d[])
{
	int m,t,s=0,ans;
	m=strlen(d);
	for(t=0;t<m;t++)
	{
		if(d[t]==d[m-1-t]) s=s+1;
	}
	if(s==m) ans=1;
	else ans=0;
	return ans;
}
void main(){
  
	
	char a[501];
	
	int i,j,k,z,n; 
   
	 gets(a);


	 n=strlen(a);
  
   for(j=1;j<n;j++)	 

   for(i=0;i<n-j;i++)
   { 
	   for(k=0;k<=j/2;k++)
	   {
		   if(a[i+k]!=a[i+j-k]) break;
	   }
	  
	   if(k==j/2+1) 
	   {
		   for(z=i;z<=i+j;z++)
		   { printf("%c",a[z]);
		    
		   } 
	   printf("\n");
	   }
   }
}
//2014.1.2
//zwb

int main ()
{
	int i, j, k, flag = 0;
	char a[501] = {'\0'};
	cin >> a;
	int len = strlen(a);
	for(i = 2; i <= len; i++)
	{
		for(j = 0; j <= len - i; j++)
		{
			flag = 0;
			for(k = j; k <= i / 2 + j; k++)
			{
				if(a[k] != a[i+j+j-1-k])
				{
					flag = 1;
					break;
				}
			}	
			if(flag == 0)
			{
				for(k = j; k <= i + j - 1; k++)
				{
					cout << a[k];
				}
				cout << endl;
			}
		}
	
	}
	return 0;
}
void main()
{
	void huiwen(char c[1000],int);
	int i,n;
	char c[1000];
	gets(c);
	for (i=2;i<=strlen(c);i++)
		huiwen(c,i);
	
}

void huiwen(char c[1000],int i)
{
	int j,l,flag=0,m;
	char *p=c;
	for(j=0;j<=strlen(c)-i;j++)
	{	for(l=0;l<=i/2;l++)
		{	
			if(*(p+j+l)!=*(p+j+i-l-1))
			{flag=1;break;}
		}
			if(flag==0)
			{
				for(m=0;m<i;m++)
					printf("%c",*(p+j+m));
				printf("\n");
			}
		flag=0;
	}
}
int main()
{
	char a[2000];
	int i,j,k,c;
	for(i=0;i<=500;i++)
		a[i]='\0';
	gets(a);
	for(i=2;i<=500;i=i+2)
		for(j=0;j<=500;j++)
		{
			if(a[j]!='\0')
			{
				c=1;
				for(k=0;k<=i/2;k++)
				{
					if(a[j+k]!=a[j+i-k-1])
					{
						c=0;
						break;
					}
				}
			}
			if(c==1)
			{
				for(k=j;k<=j+i-1;k++)
					printf("%c",a[k]);
				printf("\n");
			}
		}
	return 0;
}
int f(char a[])
{
     int i,j,n;
	 n=strlen(a);
	 char b[501];
	 j=0; 
	 for(i=n-1;i>=0;i--)
	   b[j++]=a[i];
	  b[j]='\0';
	  if(strcmp(a,b)==0) return 1;
	  else return 0; 

} 

int main()
{
    char a[501],b[501]; 
    gets(a);
	int n,i,j,k,s;
	n=strlen(a);

	for(i=2;i<=n;i++)
	   for(j=0;j+i-1<n;j++)
	     {
		 s=0; 
		 for(k=0;k<500;k++)
	     b[k]='\0';
		 for(k=j;k<j+i;k++)
		 {
		   b[s++]=a[k]; 
		  } 
         if(f(b)==1) printf("%s\n",b);
		}
		return 0; 

}
int main()
{
    int i,j,k,sign,l;
	char s[550];

	gets(s);
	l=strlen(s);
	for(i=2;i<=l;i++)
	{
	    for(j=0;j<l;j++)
		{
			sign=0;
		    for(k=j;k<j+i;k++)
			{
			    if(s[k]==s[j+i-1-k+j])
					sign++;
			}
			if(sign==i)
			{
				for(k=j;k<j+i;k++)
					printf("%c",s[k]);
				printf("\n");
			}
		}
	}
	return 0;
}
main()
{
      char s[500];
      int i,j,k,l,t,m;
      scanf("%s",s);
      l=strlen(s);
      for(i=2;i<=l;i++)
      {
         for(j=0;j<=l-i;j++)
         { 
            t=1;
            for(k=j;k<j+i;k++)
            {
                if(s[k]!=s[j+j+i-1-k])
                {
                   t=0;
                   break;
                }
                if(t==0) break;
            }
            if(t==1)
            {
               for(m=j;m<j+i;m++)
               printf("%c",s[m]);
               printf("\n");
            }
         }
      }
}
/*
 * fuxi001_huiwen_zichuan.cpp
 * name:????
 *  Created on: 2011-12-21
 *      Author: zhujile
 */
void check(char *p,char *q)
{
	int flag=1;                   //??
	char *st=p,*en=q;
	for (;st<en;st++,en--)        //??????
	{
		if (*st==*en) continue;
		else {flag=0;break;}      //???????
	}
	if (flag==1)                  //?????????
	{
		while(p<=q)               //??
		{
			cout<<*p;
			p++;
		}
		cout<<endl;
	}
}
int main(){
	char a[501];
	cin.getline(a,501);            //??
	char *p,*q;
	int length,k;
	length=strlen(a);              //????
	for (k=1;k<length;k++)         //??????
	{
		p=a;
		q=a+k;
		for (;q<a+length;p++,q++)
		{
			if (*p==*q)            //???????
				check(p,q);        //??
		}
	}
	return 0;
}
char * my_strrev(char *str);
int main()
{
	int t,i;
	char str[1000];
	gets(str);t=2;
	char subStr[101], revSubStr[101];
	while(t<=strlen(str))
	{
		for(i=0;i<=strlen(str)-t;i++)
		{
			strncpy(subStr,str+i,t);
			strncpy(revSubStr,str+i,t);
			subStr[t] = revSubStr[t] = '\0';
			my_strrev(revSubStr);
			if(strcmp(subStr,revSubStr)==0)
			{
				cout<<subStr<<endl;
			}
		}
		t++;
	}
	
	return 0;
}
char * my_strrev(char *str)

{

   char *right = str;

   char *left = str;

   char ch;

   while (*right)   right++;

   right--;

   while (left < right)

   {

       ch = *left;

        *left++ = *right;

        *right-- = ch;

   }

   return(str);

}
main()
{
  int i,j,k,n,bools;
  char s[500];
  gets(s);
  n=strlen(s);
  for(k=2;k<=n;k++)
    for(i=0;i<=n-k;i++)
     { bools=1;
       for(j=i;j<i+k/2;j++)
         if(s[j]!=s[2*i+k-j-1])
          {bools=0;break;}
       if(bools==1)
         { for(j=i;j<=i+k-1;j++)
            printf("%c",s[j]);
           printf("\n");
         }
     }
  return 0;
}
int main()
{
	char s[500];
	int i=0,j=0,k=0,l=0,t=0,p=0;
	int a[500];
	cin>>s;
	for(i=0;;i++)
	{
		if(s[i]=='\0')
			break;
		l++;
	}
	for(i=0;i<l-1;i++)
	{
		if(s[i]==s[i+1])
		{	
			a[j++]=i;
			cout<<s[i]<<s[i+1]<<endl;
		}
	}
	for(k=1;k<l/2;k++){
		for(i=0;i<j;i++){
			int m=0;
			for(t=1;t<=k;t++){
				if(a[i]-t<0||a[i]+1+t>l-1)
					break;
				else
				{
					if(s[a[i]-t]==s[a[i]+1+t])
                       m++;
				}
			}
			if(m==k)
			{
				for(p=a[i]-k;p<=a[i]+1+k;p++)					
					cout<<s[p];
			        cout<<endl;
			}
		}
	}
	return 0;      
}
void main()
{
	char str[500],string[2][250];
	int n,i,j,k;
	gets(str);
	n=strlen(str);
	for(i=1;i<n;i++)
	{
		for(j=0;j<n-i;j++)
		{
			if(str[j]==str[j+i])
			{
				for(k=0;k<i+1;k++)
				{
					string[0][k]=str[j+k];
					string[0][i+1]='\0';
				}
				for(k=i;k>=0;k--)
				{
					string[1][i-k]=str[j+k];
					string[1][i+1]='\0';
				}
				if (strcmp(string[0],string[1])==0)
					printf("%s\n",string[0]);
			}
		}
	}
}
int main()
{
    char a[500];
    int l,i,j,m,p,n,k;
    scanf("%s",a);
    l=strlen(a);
    for(i=2;i<=l;i++)
    {
       for(j=0;j<=l-i;j++)
       {
          p=1;
          m=j;
          n=m+i-1;
          while(m>=0)
          {
            if(a[m]!=a[n])
            {
               p=0;
               break;
               }
               if(m==n||n-m==1)
               break;
               m++;
               n--;
               }
         if(p==1)
         {
                 for(k=j;k<=j+i-1;k++)//????j???m 
                 printf("%c",a[k]);
                 printf("\n");
                 }
        }
        }
        getchar();
        getchar();
}
int main()
{
	char s[500], s2[500], temp1[500], temp2[500];
	int len, n, i, j, k;
	scanf("%s", s);
    len = strlen(s);
	for (i=0;i<len;i++) s2[i] = s[len - i - 1];
	s2[len]=0;
	for (i=2;i<=len;i++)
		for (k=0;k<=len-i;k++)
		{
			for (j=0;j<i;j++) temp1[j] = s[j+k];
			temp1[i] = 0;
			for (j=0;j<i;j++) temp2[j] = s2[len-k-i+j];
			temp2[i] = 0;
			if (strcmp(temp1, temp2)==0) printf("%s\n", temp1);
		}
	return 0;
}
int main()
{
	int s,i,j,n,r,ok;
	char a[505];
	gets(a);
	n=strlen(a);
	for (r=2;r<=n;r++)
		for (i=0;i<=n-r;i++)
		{
			ok=1;
			j=i+r-1;
		    for (s=i;s<=i+(j-i)/2;s++)
				if (a[s]!=a[j+i-s])
				{ok=0;break;}
			if (ok)
			{
				for (s=i;s<=j;s++)
					printf("%c",a[s]);
                printf("\n");
            }
		}
  }
//***************************************
//*  ????1.cpp                      *
//*  ??????1100012964?           *
//*  ?????2011?11?               *
//*  ?????????                 *
//***************************************
void check(char *);        
int main()                                        //???        
{
	char a[501];                                  //?????
	cin >> a;                                     //?????
    check(a);                                     //??
	return 0;
}                                                 
void check(char * a)                              //????????a
{
    int i, j, k, l, p, q;
	l = strlen(a);         
    for (i = 2; i <= l; i++)                      //????????????
	{
		for (j = 0; j <= l - i; j++)
		{
            q = 0;                                //??????q
			for (p = j; p < j + i; p++)
			{
		        if (a[p] == a[2 * j + i - p - 1])
			       q++;
			}
			if (q == i)	                          //??????????????????      
			{
			    for (k = j; k <= j +  i - 1; k++)
					cout << a[k];
				cout << endl;
			}
		}
	} 
}                                                 //????
void f(int x,char str[501]);
   int main()
  {
      int le,x=2;
       char str[501];
        cin>>str;
      for(x=2;x<=le;x++)
        f(x,str);
        return 0;
   }

void f(int x,char str[501])
{
	int i,le,j,flag=1,p;
	   le=strlen(str);
	   for(i=0;i<=le-x;i++)
	  {
		   if(x%2==0)
		   {
			   for(j=i;j<=i+x/2-1;j++)
				if(str[j]!=str[i+i+x-1-j])
					flag=0;
		         if(flag==1)
			     {
			        for(p=i;p<=i+x-1;p++)
			        cout<<str[p];
			        cout<<endl;
			      }
		         flag=1;
		    }
	           if(x%2==1)
	           {
		          for(j=i;j<=i+(x-1)/2-1;j++)
			          if(str[j]!=str[i+i+x-1-j])
				           flag=0;
		              if(flag==1)
		               {
			                 for(p=i;p<=i+x-1;p++)
				             cout<<str[p];
			                 cout<<endl;
		                }
		                flag=1;
	           }
	}
}
/*
 * 1204.cpp
 *
 *  Created on: 2012-12-4
 *      Author: wangyinzhi
 */
int main(){
	char a[500];
	int i,j,k,t;
	cin>>a;
	for(i=2;i<=strlen(a);i++){//?????
		for(j=i-1;j<strlen(a);j++){//????
			for(k=0;k<i/2;k++){
				if(a[j-k]!=a[j-i+k+1])//????
					break;
			}
			if(k==i/2){
				for(t=0;t<i;t++){
					cout<<a[j-i+t+1];//???????
				}
				cout<<endl;
			}
		}
	}
	return 0;
}
int main()
{
	char ch[510];
	int a[125000][3];//??????
	int n=0,m=0;
	int i=0,j=0,k=0;
	cin.getline(ch,510,'\n');
	while(ch[n]!='\0')//???????
		n++;
	for(k=0;k<n;k++)//??????
		for(i=k+1;i<n;i++)
		{
			int count=0;
			for(j=k;j<=i;j++)
				if(ch[j]==ch[k+i-j])
					count++;
			if(count==i-k+1)//???????
			{
				a[m][1]=k;//????
				a[m][2]=i;//????
				a[m][0]=i-k+1;//??
				m++;//????????
			}
		}
	for(k=0;k<m-1;k++)//?????
		for(i=0;i<m-1-k;i++)
			if(a[i][0]>a[i+1][0])
			{
				int t=0;
				t=a[i][0];a[i][0]=a[i+1][0];a[i+1][0]=t;
				t=a[i][1];a[i][1]=a[i+1][1];a[i+1][1]=t;
				t=a[i][2];a[i][2]=a[i+1][2];a[i+1][2]=t;
			}
	for(k=0;k<m;k++)
	{
		for(i=a[k][1];i<=a[k][2];i++)
			cout<<ch[i];
		cout<<'\n';
	}
	return 0;
}
int main()
{
	char a[500],b[500],c[500];
	int i,j=0,l,s=0,n,p,q,k=0;
	scanf("%s",a);
	l=2;
	n=strlen(a);
	while(l<=n)
	{
		for(i=0;i<n+1-l;i++)
		{
			p=i;
			q=i;
			for(s=0;s<=l-1;s++)
			{
				b[j]=a[p+l-1];
				p=p-1;
				c[j]=a[q];
				q=q+1;
				j++;
			}
			for(j=0;j<l;j++)
                 {
                     if(b[j]==c[j])
                         k=k+1;
                     else;
                   }
               if(k==l)
			   {
				   for(j=0;j<l;j++)
				     {
						 printf("%c",c[j]);
				   }
				   printf("\n");
			   }
			else;
			j=0;
			k=0;
			s=0;
		}
		l++;
		i=0;
	}
	return 0;
}
int main()
{
	char s[100],b[100]={0};
	int len,i,j,k,m;
    gets(s);
	len=strlen(s);
	for(i=0;i<len;i++)
		b[i+1]=s[i];
	for(i=2;i<=len;i++)//i?0?8?0?5?0?3?0?1?0?2?0?2×?0?7?0?7?0?3?0?8?0?2?0?6¤?0?9?0?6?0?5?0?1×?0?6?0?9?0?0?0?2?0?92?0?0?0?2×?0?0·?0?4?0?5?0?1×?0?6?0?6¤?0?2?0?9len?0?0?0?2×?0?0·?0?4
		for(j=1;j<=len+1-i;j++)//j?0?8?0?5?0?6¤?0?9?0?6?0?2?0?9i?0?8?0?2?0?3?0?1?0?2?0?2×?0?7?0?7?0?3?0?8?0?2?0?8××?0?0·?0?4?0?8?0?3?0?8?0?5×éb?0?0?0?4?0?8?0?2?0?2?0?3?0?0?0?1?0?5?0?1?0?7?0?71?0?8?0?5len+1-i?0?3?0?5
		{
		
	     for(k=j;k<=(2*j+i-1)/2;k++)//k?0?8?0?5?0?3?0?1?0?2?0?2×?0?7?0?7?0?3?0?0?0?4?0?8?0?2?0?0÷?0?0?0?2×?0?0·?0?4?0?8?0?3?0?8?0?5×é?0?0?0?4?0?8?0?2?0?2?0?3?0?0?0?1
		 {
	     	if(b[k]==b[i+2*j-1-k])continue; //?0?3?0?1?0?2?0?2×?0?0?0?7?0?3?0?8?0?2?0?0?0?1?0?4?0?6?0?5?0?1?0?9?0?8?0?6?0?4?0?2?0?3?0?0?0?1?0?8?0?2×?0?0·?0?4?0?3à?0?1?0?1
			else break;
			
		 }
      	if(k==(i+2*j-1)/2+1)  //?0?9ù?0?7?0?4?0?9?0?8?0?6?0?4?0?2?0?3?0?0?0?1×?0?0·?0?4?0?9?0?4?0?3à?0?1?0?1
			{
				for(m=j;m<j+i-1;m++)
		         printf("%c",b[m]);printf("%c\n",b[j+i-1]); //?0?8?0?1?0?6?0?2×?0?0?0?7?0?3
			}
		
		}
		
		return 0;
}
void huiwen(char string[500],int full,int length)
{
	int x,y,u,i;
	for(x=0;x<=full-length+1;x++)
    {   
         i=1;         
		for(y=x;y<=x+length-1;y++)
		{
			if(string[y]==string[2*x+length-1-y])
				i=i*1;
			else
				i=i*0;
		}
		if(i==1)
		{
			for(u=x;u<=x+length-1;u++)
				printf("%c",string[u]);
			printf("\n");
		}
	}
}
		
int main()
{
	char str[500];
	gets(str);
	int w;
	w=strlen(str);
	int v;
	for(v=2;v<=w;)
	{
	  huiwen(str,w,v);
	  v=v+2;
	}
	return 0;
}
int main()
{
	char str[505];
	cin >> str;
	int len=strlen(str);
	int l,s;
	for(l=2;l<=len;l++)
	{
		for(s=0;s<=len-l;s++)
		{
			int flag=1;
			for(int p=s,q=s+l-1;p<q;p++,q--)
			{
				if(str[p]!=str[q])
				{
					flag=0;
					break;
				}
			}
			if(flag)
			{
				for(int k=s;k<=s+l-1;k++)
					cout<<str[k];
					cout<<endl;
			}
		}
	}
	return 0;
}
void main()
{
	char str[MAX],sub1[MAX],sub2[MAX];
	int	len,i,j,k,l;//i length of substring, j head of substring

	gets(str);
	len=strlen(str);

	for(i=2;i<=len;i++){
		for(j=0;j<=len-i;j++){
			for(k=j,l=0;k<=i+j-1;k++,l++){
				sub1[l]=str[k];
				sub2[l]=str[i+2*j-1-k];
			}
			sub1[i]='\0';
			sub2[i]='\0';
			if(strcmp(sub1,sub2)==0)
				printf("%s\n",sub1);
		}
	}
}
int main()
{
char s[1000];
int i,j,k,n,sum=0;
gets(s);
n=strlen(s);
for(j=1;j<=n;(j=j+2))
{
  for(i=0;(i+j)<n;i++)
  {
     for(k=0;k<=(j/2);k++)
     { 
        if(s[i+j/2-k]==s[i+j/2+1+k])
        sum++;
     }
     if(sum==j/2+1)
     { 
            for(k=i;k<=i+j;k++)
            printf("%c",s[k]);
            printf("\n");
     }
     sum=0;
   }
}
getchar();
getchar();
}
int judge(char a[],int i,int k)
{
   int j=i+k;
    while(a[i]==a[j]&&i<=strlen(a)&&j>=0)
    {
        i++;j--;

    }
    if(i>=j)
        return 1;
    else return 0;
}

int main()
{
    char a[510];
    memset(a,0,sizeof(char)*510);
    gets(a);
                                        /*if(judge(a))
                                        printf("YES");
                                        else printf("NO");*/
    int i,j,k;
    for(k=1;k<strlen(a);k++)
    {
        for(i=0;i+k<strlen(a);i++)
        {

                if(judge(a,i,k))
                {
                    for(j=i;j<=i+k;j++)
                        printf("%c",a[j]);
                    putchar('\n');
                }

        }

    }

    return 0;
}
int main ()
{
	char ch[500];												//??????
	cin >> ch;
	int len = 0;												//?????????
	len = strlen(ch);
	for ( int templen = 2; templen <= len; templen ++ )			//??????
		for ( int i = 0; i <= len - templen; i ++ )				//?????????????
			for ( int j = i; j < i + templen; j ++ )			//????????????????
			{
				if ( ch[j] != ch[templen+i-1-(j-i)] ) break;
				if ( j == i + templen - 1 )
				{
					for ( int k = i; k < i + templen; k ++ )
						cout << ch[k];
					cout << endl;
				}
			}
	return 0;
}
int main()
{
	char s[500];
	int i=0,j,l,k,m;
	gets(s);
	l=strlen(s);
	for(j=0;j<=i;j++)
	{
		for(i=0;i+j+1<l;i++)
		{	
			for(k=0;k<=j;k++)
				if (s[i-k]!=s[i+1+k])
					break;
			if(k==j+1)
			{
				for(m=0;m<(j+1)*2;m++)
				printf("%c",s[i-j+m]);
				printf("\n");
			}
			if(i==l-1)
				break;
		}
	}
	return 0;
}
/**
 *file:????11-24??
 *author:???
 *date?201011-26
 *discription?????
 */
int main ()
{
	//????????????????i??????j,k,m?????l?????len???????
	char str[501] ;
	int i , j , k , l , m , len ;
	cin >> str ;
	len = strlen( str ) ;
	for ( i = 2 ; i <= len ; i ++ )//????????????????
	{
		for ( j = 0 ; j <= len - i ; j ++ )//?????????
		{
			l = j + i / 2 ;//l??????????
			//??????????????????????????????
			for ( k = j ; k <= l ; k ++ )
			{
				if ( str[k] != str[2*j+i-k-1] ) break ;
			}
			//?????????????????????????????????????????????
			if ( k == l+1 )
			{
				for ( m = j ; m < j + i ; m ++ )
					cout << str[m] ;
				cout << endl ;
			}
		}
	}
	return 0 ;
}
int main()
{
	int i,j,k,l;
	char a[501];
	gets(a);
	for(j=2;j<strlen(a);j=j+2)
	{
		for(i=0;i<strlen(a);i++)
		{
			int d=0;
			for(k=j/2;k>=0;k--)
			{
				if(a[i+k]==a[i+j-k-1])
				{
					continue;
				}
				else
				{
					d=1;
					break;
				}
			}
			if(d==0)
			{
				for(l=i;l<i+j;l++)
				{
					printf("%c",a[l]);
				}
				putchar('\n');
			}	
		}
	}
	return 0;
}
void check_palin(char str[], int begin, int end)
{
	int i, palin = 1;
	for (i = begin; i <= end; i ++)
		if (str[i] != str[begin + end - i]) palin = 0;
	
	if (palin)
	{
		for (i = begin; i <= end; i ++)
			cout << str[i];
		cout << endl;	
	}
}

int main()
{
	char str[500 + 10];
	int i, j, k;
	cin.getline(str, 501);
	for (j = 2; j <= strlen(str); j ++)
		for (i = 0; i < strlen(str); i ++)
			check_palin(str, i , i + j - 1);
	return 0;
}
int main()
{
    char str[510];
    int m,s,i,j,k;
    gets(str); 
    for(j=1;j<strlen(str)-1;j++)
      {
        for(i=0;i<strlen(str);i++)
        {
          m=j+1;
          for(s=i;s<=m/2-1+i;s++)
            if(str[s]!=str[m-s-1+i+i])break;
          if(s==m/2+i)
            {for(s=i;s<=i+j;s++)printf("%c",str[s]);printf("\n");}
        }
      }
    return 0;
}
//***********************************
//??:???    1200012772 *********
//??:????             *********
//??:2012?11?16?       *********
int main()
{
	char a[500];
	cin >> a;
	int i = 0, j = 0, flag = 1, k = 0;
	for (j = 2; j <= strlen(a); j++)
		for (i = 0;i <= (strlen(a) - j); i++)
		{
			for (k = i; k < (i + j); k++)
			{
				if(a[k] != a[i + i + j - k - 1])
				{
					flag = 0;
					break;
				}
			}
			if (flag)
			{
				for (k = i; k < (i + j); k++)
					cout << a[k];
				cout << endl;
			}
			flag = 1;
		}
		return 0;
}
int main()
{   int check(char str[]);
    char string[1000];
    gets(string);
    int n,i;
    n=strlen(string);
    int j;
    int k,m;
    int w=0;
    int r;
    char str2[1000];
    for(j=2;j<n;j++)
    {
                 for(m=0;m<=n-j;m++)
                 {
                                 for(k=m;k<m+j;k++)
                                 {
                                                 str2[w]=string[k];
                                                 w++;
                                                 str2[w]='\0';
                                                 if(k==n)
                                                 break;
                                 }
                                 r=check(str2);
                                 if(r==1)
                                 {
                                 printf("%s\n", str2);
                                 }
                                 w=0;
                 }
    }
    return 0;
}

          int check(char str[])
    {
        int n;
        char str1[1000];
        strcpy(str1,str);
        n=strlen(str);
        int i;
        char c;
        for(i=0;i<=(n-1)/2;i++)
        {
               c=str[i];
               str[i]=str[n-1-i];
               str[n-1-i]=c;
        }
        if(strcmp(str,str1)==0)
        return 1;
        else
        return 0;
        }
/*
 * 1000012900.cpp
 *
 *  Created on: 2010-12-23
 *      Author: Princeyou
 */
int main()
{
	char a[500];
	cin >> a;
	int i,j,l,k,m,n,c;
	l=strlen(a);
	for(k=1;k<=l/2;k++)
	for(i=0;i<l;i++)
	{
		m=i;
		n=i+1;
		c=0;
		while(a[m]==a[n])
		{
			c++;
			if(c==k)
			{
				for(j=m;j<=n;j++)
				cout << a[j];
				cout << endl;
				break;
			}
				m--;
				n++;
		}
	}
		return 0;
}
int main()
{
	char s[500];
	gets(s);
	int len;
	len=strlen(s);
	int n, i, j;
	int judge;
	for(n=2;n<=len;n++)
	{
		for(j=0;j<len-n+1;j++)
		{
			judge=1;
			for(i=0;i<n;i++)
			{
				if(n+j-i-1>=len) break;
				else
				{
					if(s[i+j]!=s[n-1-i+j]) judge=0;
				}
			}
			if(judge==1)
			{
				for(i=0;i<n;i++)
				{
					printf("%c", s[i+j]);
				}
				printf("\n");
			}
		}
	}
	return 0;
}
int main() {
	int i = 0, L = 0, k = 0, j = 0, c, t = 0;
	char a[500];
	while ((c = getchar()) != '\n')
		a[k++] = c;
	for (L = 2; L <= k; L++) {//L?????
		t = 0;
		for (i = 0; i < k; i++) {
			t = 0;
			for (int p = L; p > 0; p--) {//???????
				if (a[i + L - p] == a[i + p - 1])
					t = 1;
				if (a[i + L - p] != a[i + p - 1]) {
					t = 0;
					break;
				}
			}
			if (t == 1) {//??
				for (j = i; j < i + L; j++)
					cout << a[j];
				cout << endl;
			}
		}
	}
	return 0;
}
main()
{
	int i,j,l,k;
	char a[500],b[500];
	gets(a);
	l=strlen(a);
	for(i=2;i<=l;i++)
	{
		for(j=0;j<=l-i;j++)
		{
			strcpy(b,a);
			for(k=j;k<=j+i-1;k++)
			{
				b[k]=a[2*j+i-1-k];
			}
			if(strcmp(a,b)==0){for(k=j;k<=j+i-1;k++) printf("%c",a[k]); printf("\n");}
		}
	}
}
int hui(char s[501]){
	int i;
	for(i=0;i<strlen(s);i++){
		if(s[i]!=s[strlen(s)-1-i]){
			return 0;
			break;
		}
	}
	if(i>=strlen(s)) return 1;
}
int main()
{
	int i,j,len;
	char s[501],temp[501];
	cin.getline(s,501);
	for(len=2;len<=strlen(s);len++){
		for(i=0;i+len-1<strlen(s);i++){
			for(j=0;j<len;j++){
				temp[j]=s[i+j];
				temp[len]='\0';
			}
			if(hui(temp)==1)
				cout<<temp<<endl;
		}
	}
	return 0;
}
int main()
{
	char str[500];
	char part[500];
	int k=0;
	scanf("%s",str);
	int length=strlen(str);
	for(int i=2;i<=length;i++)
	{
		for(int m=0;m<length-i+1;m++)
		{
			for(int j=0;j<i;j++)
				part[j]=str[j+m];
			part[i]='\0';
			for(k=0;k<i/2;k++)
				if(part[k]!=part[i-k-1])
					break;
			if(k==i/2)
				printf("%s\n",part);
		}
	}
	return 0;
}
int main()
{
    char s[505];
    int i, j, l;
    cin >> s;
    l = strlen(s);
    for (i = 2; i <= l; i++)
        for (j = 0; j <= l - i; j++)
        {
            int t = i / 2;
            int k;
            for (k = 0; k < t; k++)
            {
                if (s[j + k] != s[j + i - k - 1]) break;
            }
            if (k >= t)
            {
                for (int m = j; m < j + i; m++)
                {
                    cout << s[m];
                }
                cout << endl;
            } 
        }
        
   
    return 0;
}
void shuchu(char b[], int m)
{
 int i, j, k, l, flag;
 for (j = 2; j <= m; j++)
 {
  for (i = 1; i <= m - 1; i++)
  {
   flag = 1;
   for (k = 0; k < j; k++)
   {
    if (b[i + k] != b[i + j - k - 1])
     flag = 0;
   }
   if (flag)
   {
    for (l = 0; l<j; l++)
    {
     if(l == j-1)
      cout << b[i + l]<<endl;
     else
      cout << b[i + l];
    }
   }
  }
 }
}


int main()
{
 int m;
 char a[501];
 for (m = 1; m > 0; m++)
 {
  if (a[m-1]== '\n')
   break;
  a[m] = cin.get();
 }
 shuchu(a, m);
 return 0;
}