Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

LIST2509 - Danh sách liên kết - Linked list

Ta xét 1 cách biểu diễn danh sách: danh sách móc nối đơn:

Danh sách móc nối đơn gồm các nút nối với nhau 1 chiều. Mỗi nút gồm 2 trường:

Trường thứ nhất chứa giá trị nút đó.

Trường thứ hai chứa liên kết (con trỏ) đến nút tiếp theo. Tức là chứa đủ thông tin để biết nút kế tiếp là nút nào. Trong trường hợp đây là nút cuối cùng nó mang 1 giá trị đặc biệt (NULL)

Bài toán:

Cho 1 đồ thị, ở trạng thái ban đầu chưa có đỉnh nào. Có ba thao tác:

1 Add(i): Thêm đỉnh i vào đồ thị

2 Insert(i, j): thêm cạnh (i, j) nối 2 đỉnh i, j vào đồ thị.

3 Delete(i, j): xoá cạnh (i, j) nối 2 đỉnh i, j ra khỏi đồ thị.

Sau khi thực hiện xong 1 dãy các thao tác 1, 2, 3. Đưa ra số đỉnh trong đồ thị và danh sách các đỉnh kề với mối đỉnh của đồ thị.

Yêu cầu: Giải quyết bài toán bằng cách dùng danh sách liên kết.

Input

Dòng đầu tiên ghi P là số thao tác. ( 1 <= P <= 10000)

P dòng tiếp theo: Đầu tiên ghi số i là mã số của lệnh

i > 1 thì ghi cặp số i, j là 2 đỉnh của 1 cạnh.

Output

Dòng đầu tiên ghi số n là số đỉnh có trong đồ thị.

n dòng tiếp theo: dòng thứ i ghi k là số đỉnh kề với nó, k số tiếp theo là danh sách các đỉnh kề với đỉnh i.

Example

Input:
10
1
1
2 1 2
1
1
2 1 3
2 2 3
3 3 1
1
2 5 4

Output:
2
2 1 3
0
1 5
1 4


Được gửi lên bởi:special_one
Ngày:2009-01-04
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:C CSHARP CPP JAVA PAS-FPC

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.