#include #include #include #include #define foreach(T,p,c) for(T p = (c).begin(); p != (c).end(); p++) using namespace std; int main(void) { int code[7500], last[7500]; vector adj[7500]; int n = 0, m; while(cin >> m) code[n++] = m - 1; set A; for(int i = 0; i <= n; i++) A.insert(i); for(int i = n - 1; i >= 0; i--) { if(A.find(code[i]) != A.end()) { last[i] = code[i]; A.erase(code[i]); } else { last[i] = -1; } } for(int i = 0; i < n; i++) { m = *(A.begin()); A.erase(m); adj[code[i]].push_back(m); adj[m].push_back(code[i]); if(last[i] >= 0) A.insert(last[i]); } for(int i = 0; i <= n; i++) { sort(adj[i].begin(), adj[i].end()); cout << (i + 1) << ":"; foreach(vector::iterator, p, adj[i]) cout << " " << (*p + 1); cout << endl; } return 0; }