import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;
import std.container : DList;

T read(T)() { return readln.chomp.to!T; }
T[] reads(T)() { return readln.split.to!(T[]); }
alias readint = read!int;
alias readints = reads!int;

void main() {
    auto list = new LinkedList();
    int q = readint;
    for (int i = 0; i < q; i++) {
        auto qu = readints;
        switch (qu[0]) {
        case 0: // insert
            list.insert(qu[1]);
            break;
        case 1: // move
            if (qu[1] >= 0)
                list.moveNext(qu[1]);
            else
                list.movePrev(-qu[1]);
            break;

        case 2: // erase
            list.erase();
            break;
        default: break;
        }
    }

    list.dump();
}

class Node {
    int value;
    Node next;
    Node prev;

    this(int value) {
        this.value = value;
    }
}

class LinkedList {
    private Node _sentinel;
    private Node _cursor;

    this() {
        _sentinel = new Node(int.max);
        _cursor = _sentinel;
    }

    // カーソル位置の直前に新しい要素を追加する。カーソルはその要素を指す
    void insert(int value) {
        auto x = new Node(value);
        auto prev = _cursor.prev;
        if (prev !is null) {
            prev.next = x;
            x.prev = prev;
        }

        _cursor.prev = x;
        x.next = _cursor;
        _cursor = x;
    }

    // カーソルを d だけ進める
    void moveNext(int d) {
        for (int i = 0; i < d; i++) {
            _cursor = _cursor.next;
        }
    }

    // カーソルを d だけ戻す
    void movePrev(int d) {
        for (int i = 0; i < d; i++) {
            _cursor = _cursor.prev;
        }
    }

    // カーソル位置の要素を消す
    void erase() {
        auto prev = _cursor.prev;
        auto next = _cursor.next;
        if (prev !is null)
            prev.next = next;
        next.prev = prev;
        _cursor = next;
    }

    void dump() {
        auto x = _cursor;
        while (x.prev !is null) x = x.prev;
        while (x !is _sentinel) {
            writeln(x.value);
            x = x.next;
        }
    }
}

