function char[] concat(char[] a, char[] b) {
    var char[] result; result := array(char, a.length+b.length, a.offset);
    var int i; i := 0;

    while i < result.length do
        result[i+result.offset] := if i < a.length then a[i+a.offset] else b[i-a.length+b.offset] fi;
        i := i+1;
    od;

    result
};

function char[] substring(char[] s, int start, int stop) {
    var char[] result; result := array(char, stop-start, 0);
    var int i; i := 0;

    while i < result.length do
        result[i] := s[i+start];
        i := i+1;
    od;

    result
};

function char dtoa(int d) {
    var char c;    c := '0';
    if d == 1 then c := '1' fi;
    if d == 2 then c := '2' fi;
    if d == 3 then c := '3' fi;
    if d == 4 then c := '4' fi;
    if d == 5 then c := '5' fi;
    if d == 6 then c := '6' fi;
    if d == 7 then c := '7' fi;
    if d == 8 then c := '8' fi;
    if d == 9 then c := '9' fi;
    c
};

function char[] itoa(int n) {
    if n == 0 then
        ['0']
    else
        if n < 0 then
            concat(['-'], itoa(-n))
        else
            if n >= 10 then
                concat(itoa(n/10), [dtoa(n-n/10*10)])
            else
                [dtoa(n)]
            fi
        fi
    fi
};

function char[] strjoin(char[][] strings, char[] sep) {
    var char[] result; result := array(char, 0, 0);
    var int i; i := 0;

    while i < strings.length do
        result := concat(result, strings[i]);
        if i < strings.length-1 then
            result := concat(result, sep);
        fi;
        i := i+1;
    od;

    result
};

var char[] input;

print(strjoin([['H','i'], read(input), itoa(1337)], [';']));
