#include <algorithm>
#include <cstdio>
#include <iostream>
#include <iterator>
#include <string>
#include <utility>
#include <vector>

using namespace std;

typedef pair<vector<string>, vector<double>> TransactionList;

template <typename T>
TransactionList getTransactionsForSearchCriteria(TransactionList result, T criteria) {
    auto& attribute = get<vector<T>>(result);
    auto it = lower_bound(attribute.begin(), attribute.end(), criteria);

    //check that criteria matches transaction attribute
    if(it != attribute.end() && *it == criteria) {
    	cout << criteria << " is a duplicate\n";
    }
    attribute.insert(it, criteria);
    return result;
}

int main() {
	TransactionList result;
	size_t size;
	double num;
	string i;
	
	while(cin >> i) {
		if(sscanf(i.c_str(), "%lf%n", &num, &size) == 1 && size == i.size()) {
		    result = getTransactionsForSearchCriteria(result, num);
		} else {
		    result = getTransactionsForSearchCriteria(result, i);
		}
	}
	
	cout << "Strings:\n\t";
	copy(result.first.cbegin(), result.first.cend(), ostream_iterator<string>(cout, " "));
	cout << "\nDoubles:\n\t";
	copy(result.second.cbegin(), result.second.cend(), ostream_iterator<double>(cout, " "));
}