#include <bits/stdc++.h>
using namespace std;

class Kamus {
private:
	map<string, vector<string> > data;

	void hubungkan(const string& a, const string& b){
		vector<string>& daftar = data[a];  
		if(find(daftar.begin(), daftar.end(), b) == daftar.end()){
			daftar.push_back(b);
		}
	}

public:
	void tambah(const string& kata, const vector<string>& sinonim){
		data[kata];  

		for(const string& s : sinonim){
			if(s == kata) continue;    
			hubungkan(kata, s);         
			hubungkan(s, kata);        
		}
	} 

	const vector<string>* ambilSinonim(const string& kata) const {
		map<string, vector<string> >::const_iterator it = data.find(kata);
		if(it == data.end()) return nullptr;
		return &(it->second);
	}
};

void tc(const vector<string>* hasil){
	if(hasil == nullptr){
		cout << "null\n";
		return;
	}
	cout << "[";
	for(size_t i = 0; i < hasil->size(); i++){
		if(i > 0) cout << ", ";
		cout << (*hasil)[i];
	}
	cout << "]\n";
}

int main(){
	Kamus kamus;
	kamus.tambah("big", {"large", "great"});
	kamus.tambah("big", {"huge", "fat"});
	kamus.tambah("huge", {"enormous", "gigantic"});

	tc(kamus.ambilSinonim("big"));      
	tc(kamus.ambilSinonim("huge"));     
	tc(kamus.ambilSinonim("gigantic"));  
	tc(kamus.ambilSinonim("colossal")); 
	return 0;
}