#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Status int
#define INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct{
char number;
}ElemType;
typedef struct{
ElemType *top;
ElemType *base;
int StackSize;
}SqStack;
Status InitStack(SqStack &S){
if(!S.base){
S.base = (ElemType *)malloc(sizeof(ElemType) * INIT_SIZE);
if(!S.base) return 0;
S.top = S.base;
S.StackSize = INIT_SIZE;
return 1;
}
return 0;
}
Status PushStack(SqStack &S, ElemType e){
if(!S.base) return 0;
if(S.top >= S.base + S.StackSize){
S.base = (ElemType *)realloc(S.base, sizeof(ElemType) * (INIT_SIZE + STACKINCREMENT));
S.top = S.base + S.StackSize;
S.StackSize = S.StackSize + STACKINCREMENT;
}
*S.top++ = e;
return 1;
}
Status PopStack(SqStack &S, ElemType &e){
if(!S.base|| S.base == S.top) return 0;
e = *--S.top;
return 1;
}
void main(){
char N[4];
char c;
SqStack S1,S2;
S1.base = NULL;
S2.base = NULL;
InitStack(S1);
InitStack(S2);
ElemType e1,e2;
gets(N);
int length = strlen(N);
for(int i=0;i<length;i++){
c = N[i];
e1.number = c;
PushStack(S1,e1);
}
for(int j=0;j<length;j++){
PopStack(S1,e2);
PushStack(S2,e2);
}
for(j=0;j<length;j++){
PopStack(S2,e2);
printf("%c",e2.number);
}
printf("\n");
}