#include <stdio.h>
#include <stdlib.h>

//文字列の長さを求める関数
int myStrlen(char s[]){
    int i;
    for(i = 0; s[i] != '\0'; i++);
    return i;
}

//文字列を2回繰り返した文字列を作る関数
char *setDouble(char s[]){
    int i, size;
    char *tmp;

    //文字列の長さを求める
    size = myStrlen(s);

    //2倍の文字数＋終端文字1文字分のメモリを確保
    tmp = (char *)malloc(sizeof(char) * (2 * size + 1));

    //メモリ確保に失敗した場合
    if(tmp == NULL){
        printf("ERROR\n");
        return NULL;
    }

    //前半に元の文字列をコピー
    for(i = 0; i < size; i++){
        tmp[i] = s[i];
    }

    //後半にも元の文字列をコピー
    for(i = 0; i < size; i++){
        tmp[i + size] = s[i];
    }

    //文字列の終わり
    tmp[2 * size] = '\0';

    return tmp;
}

int main(){
    char s[100];
    char *p;

    //文字列を入力
    scanf("%s", s);

    //2回繰り返した文字列を作る
    p = setDouble(s);

    //表示
    printf("%s -> %s\n", s, p);

    //mallocで確保したメモリを解放
    free(p);

    return 0;
}
