program wp07zad3;

const
    ROZMIAR_PAMIECI = 100;
    PUSTE = 0;
    NIEOKRESLONE = -1;
    OKRESLONE = 1;

var zmienne : array ['a' .. 'z'] of Integer;
    heap : array [1 .. ROZMIAR_PAMIECI] of record
        w : Integer;
        nast : Integer
    end;
    c : Char;
    s : String;
    num, i, co, wolne : Integer;

procedure blad;
begin
    writeln('Blad w instrukcji ', num);
    halt
end;

function odczytaj(pocz, kon : Integer) : Integer;
var i, wynik : Integer;
begin
    if (kon = pocz + 2) and (s[kon] = 'l') then
        odczytaj := PUSTE
    else begin
        wynik := zmienne[s[pocz]];
        for i := 1 to (kon - pocz) div 6 do begin
            if wynik = NIEOKRESLONE then
                blad;
            wynik := heap[wynik].nast;
        end;
        if wynik = NIEOKRESLONE then
            blad
        else
            odczytaj := wynik
    end
end;

procedure zapisz(pocz, kon, wartosc : Integer);
begin
    if pocz = kon then
        zmienne[s[pocz]] := wartosc
    else
        heap[odczytaj(pocz, kon - 6)].nast := wartosc
end;

begin
    for c := 'a' to 'z' do
        zmienne[c] := NIEOKRESLONE;
    for i := 1 to ROZMIAR_PAMIECI do
        heap[i].w := PUSTE;
    wolne := ROZMIAR_PAMIECI;
    num := 1;
    readln(s);
    while s <> '' do begin
        if s[2] = 'e' then begin
            if wolne = 0 then
                blad
            else begin
                i := 1;
                while heap[i].w <> PUSTE do
                    i := i + 1;
                heap[i].w := NIEOKRESLONE;
                heap[i].nast := NIEOKRESLONE;
                wolne := wolne - 1;
                zapisz(5, pos(')', s) - 1, i)
            end
        end else if s[2] = 'i' then begin
            co := odczytaj(9, pos(')', s) - 1);
            if (co = NIEOKRESLONE) or (co = PUSTE) then
                blad;
            for c := 'a' to 'z' do
                if zmienne[c] = co then
                    zmienne[c] := NIEOKRESLONE;
            for i := 1 to ROZMIAR_PAMIECI do
                if heap[i].nast = co then
                    heap[i].nast := NIEOKRESLONE;
            heap[co].w := PUSTE;
            wolne := wolne + 1
        end else if s[1] = '_' then begin
            co := odczytaj(4, length(s) - 3);
            if (co = PUSTE) or (co = NIEOKRESLONE) then
                blad;
            if heap[odczytaj(4, length(s) - 3)].w = NIEOKRESLONE then
                blad
        end else if s[length(s)] = '_' then
            heap[odczytaj(1, length(s) - 6)].w := OKRESLONE
        else
            zapisz(1, pos(':', s) - 1, odczytaj(pos('=', s) + 1, length(s)));
        num := num + 1;
        readln(s)
    end;
    if wolne <> ROZMIAR_PAMIECI then
        writeln('Wyciek pamieci')
end.
