#D9158. List

    ID: 7613 Type: Default 2000ms 268MiB

List

List

For a dynamic list LL of integers, perform a sequence of the following operations. LL has a special element called END at the end of the list and an element of LL is indicated by a cursor.

  • insert(xx): Insert xx before the element indicated by the cursor. After this operation, the cursor points the inserted element.
  • move(dd): Move the cursor to the end by dd, if dd is positive. Move the cursor to the front by dd, if dd is negative.
  • erase(): Delete the element indicated by the cursor. After this operation, the cursor points the element next to the deleted element. In case there is no such element, the cursor should point END.

In the initial state, LL is empty and the cursor points END.

Constraints

  • 1q500,0001 \leq q \leq 500,000
  • The cursor indicates an element of LL or END during the operations
  • Erase operation will not given when the cursor points END
  • 1,000,000,000x1,000,000,000-1,000,000,000 \leq x \leq 1,000,000,000
  • Moving distance of the cursor (d\sum{|d|}) does not exceed 1,000,000
  • LL is not empty after performing all operations

Input

The input is given in the following format.

qq query1query_1 query2query_2 : queryqquery_q

Each query queryiquery_i is given by

0 xx

or

1 dd

or

2

where the first digits 0, 1 and 2 represent insert, move and erase operations respectively.

Output

Print all elements of the list in order after performing given operations. Print an element in a line.

Example

Input

5 0 1 0 2 0 3 1 1 2

Output

3 1

inputFormat

Input

The input is given in the following format.

qq query1query_1 query2query_2 : queryqquery_q

Each query queryiquery_i is given by

0 xx

or

1 dd

or

2

where the first digits 0, 1 and 2 represent insert, move and erase operations respectively.

outputFormat

Output

Print all elements of the list in order after performing given operations. Print an element in a line.

Example

Input

5 0 1 0 2 0 3 1 1 2

Output

3 1

样例

5
0 1
0 2
0 3
1 1
2
3

1

</p>