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

int main() {
    // 读取第一行:整数
    int a;
    scanf("%d", &a);
    getchar(); // 消耗换行符
    
    // 读取第二行:长整数(使用long long确保存储1145141919810)
    long long b;
    scanf("%lld", &b);
    getchar(); // 消耗换行符
    
    // 读取第三行:浮点数
    float c;
    scanf("%f", &c);
    getchar(); // 消耗换行符
    
    // 读取第四行:字符
    char d;
    scanf("%c", &d);
    getchar(); // 消耗换行符
    
    // 读取第五行:字符串(动态分配内存处理任意长度)
    int capacity = 10;
    int len = 0;
    char *str = (char*)malloc(capacity * sizeof(char));
    if (str == NULL) {
        printf("内存分配失败\n");
        return 1;
    }
    
    char ch;
    while ((ch = getchar()) != '\n' && ch != EOF) {
        // 动态扩展内存
        if (len + 1 >= capacity) {
            capacity *= 2;
            char *temp = (char*)realloc(str, capacity);
            if (temp == NULL) {
                printf("内存扩展失败\n");
                free(str);
                return 1;
            }
            str = temp;
        }
        str[len++] = ch;
    }
    str[len] = '\0'; // 字符串终止符
    
    // 按要求输出所有内容
    printf("%d\n", a);        // 整数原样输出
    printf("%lld\n", b);      // 长整数原样输出
    printf("%.1f\n", c);      // 浮点数保留一位小数
    printf("%c\n", d);        // 字符原样输出
    printf("%s\n", str);      // 字符串原样输出
    
    free(str); // 释放动态内存
    return 0;
}