#include <stdio.h>
    #include <stdlib.h>
 
    char * readLine (FILE * file)
    {
        size_t len = 0;
        int c = 0, i = 0;
        char * out = 0;
 
        // read the whole line
        do { c 
= fgetc(file
); len
++; }         while (c!='\0' && c!='\n' && c!=EOF);
 
        // if the cursor didn't move return NULL
        if (pos 
== ftell(file
) && c 
== EOF
) return 0;  
        // allocate required memory
 
        // rewind cursor to beginning of line
        fseek (file
, pos
, SEEK_SET
);  
        // copy the line
        do { out
[i
++] = fgetc(file
); }         while (c!='\0' && c!='\n' && c!=EOF);
 
        // make sure there's \0 at the end
        out[i] = '\0';
 
        return out;
    }
 
    int main (void)
    {
    //  FILE * file = fopen("test.txt", "r");
        char * line = readLine(stdin);
 
        while(line)
        {
            printf(line
); // print current line             free(line
); // free allocated memory             line = readLine(stdin); // recur
        }
 
        return 0;
    }
				ICAgICNpbmNsdWRlIDxzdGRpby5oPgogICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICAgCiAgICBjaGFyICogcmVhZExpbmUgKEZJTEUgKiBmaWxlKQogICAgewogICAgICAgIHNpemVfdCBsZW4gPSAwOwogICAgICAgIGludCBjID0gMCwgaSA9IDA7CiAgICAgICAgbG9uZyBwb3MgPSBmdGVsbChmaWxlKTsKICAgICAgICBjaGFyICogb3V0ID0gMDsKICAgIAogICAgICAgIC8vIHJlYWQgdGhlIHdob2xlIGxpbmUKICAgICAgICBkbyB7IGMgPSBmZ2V0YyhmaWxlKTsgbGVuKys7IH0KICAgICAgICB3aGlsZSAoYyE9J1wwJyAmJiBjIT0nXG4nICYmIGMhPUVPRik7CiAgICAgICAgCiAgICAgICAgLy8gaWYgdGhlIGN1cnNvciBkaWRuJ3QgbW92ZSByZXR1cm4gTlVMTAogICAgICAgIGlmIChwb3MgPT0gZnRlbGwoZmlsZSkgJiYgYyA9PSBFT0YpIHJldHVybiAwOwogICAgICAgIAogICAgICAgIC8vIGFsbG9jYXRlIHJlcXVpcmVkIG1lbW9yeQogICAgICAgIG91dCA9IChjaGFyKiltYWxsb2MobGVuKzEpOwoKICAgICAgICAvLyByZXdpbmQgY3Vyc29yIHRvIGJlZ2lubmluZyBvZiBsaW5lCiAgICAgICAgZnNlZWsgKGZpbGUsIHBvcywgU0VFS19TRVQpOwogICAgICAgIAogICAgICAgIC8vIGNvcHkgdGhlIGxpbmUKICAgICAgICBkbyB7IG91dFtpKytdID0gZmdldGMoZmlsZSk7IH0KICAgICAgICB3aGlsZSAoYyE9J1wwJyAmJiBjIT0nXG4nICYmIGMhPUVPRik7CiAgICAgICAgCiAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlJ3MgXDAgYXQgdGhlIGVuZAogICAgICAgIG91dFtpXSA9ICdcMCc7CgogICAgICAgIHJldHVybiBvdXQ7CiAgICB9CiAgICAKICAgIGludCBtYWluICh2b2lkKQogICAgewogICAgLy8gIEZJTEUgKiBmaWxlID0gZm9wZW4oInRlc3QudHh0IiwgInIiKTsKICAgICAgICBjaGFyICogbGluZSA9IHJlYWRMaW5lKHN0ZGluKTsKICAgIAogICAgICAgIHdoaWxlKGxpbmUpCiAgICAgICAgewogICAgICAgICAgICBwcmludGYobGluZSk7IC8vIHByaW50IGN1cnJlbnQgbGluZQogICAgICAgICAgICBmcmVlKGxpbmUpOyAvLyBmcmVlIGFsbG9jYXRlZCBtZW1vcnkKICAgICAgICAgICAgbGluZSA9IHJlYWRMaW5lKHN0ZGluKTsgLy8gcmVjdXIKICAgICAgICB9CiAgICAKICAgICAgICByZXR1cm4gMDsKICAgIH0=