#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <numeric>
#include <bitset>
#include <cmath>

static const int MOD = 1000000007;
using ll = long long;
using u32 = unsigned;
using u64 = unsigned long long;
using namespace std;

template<class T> constexpr T INF = ::numeric_limits<T>::max()/32*15+208;

int main(){
    string s; int x;
    map<string, vector<int>> m;
    while(cin >> s >> x){
        m[s].emplace_back(x);
    }
    for (auto &&i : m) {
        sort(i.second.begin(),i.second.end());
        cout << i.first << "\n";
        for (int j = 0; j < i.second.size(); ++j) {
            if(j) printf(" ");
            printf("%d", i.second[j]);
        }
        puts("");
    }
    return 0;
}
