#include<iostream>
#include<cstddef>
#include<cstdlib>
#include<vector>
using namespace std;
vector<int> Keylist;
template <typename V>
class Tuple{
public:
V val;
int key;
};
template <typename V>
class HT
{
vector<Tuple<V>> tuples;
size_t index0fKey(const int & key) const{
for(int i=0;i<tuples.size();i++)
if(tuples[i].key==key) return i;
return -1;
}
public:
bool containsKey(const int & key) const{
return index0fKey(key) != -1;
}
const V & operator [](const int & key) const{
size_t index = index0fKey(key);
return tuples[index].val;
}
void put(const int & key,const V & val){
size_t index = index0fKey(key);
if(index == -1){
Tuple<V> tuple;
tuple.key=key;
tuple.val=val;
tuples.push_back(tuple);
}
else{
tuples[index].val = val;
}
Keylist.push_back(key);
}
void remove(const int & key){
size_t index = index0fKey(key);
tuples[index]= tuples[tuples.size()-1];
tuples.pop_back();
}
size_t size() const{return tuples.size();}
vector<int> getKeys(){
return Keylist;
}
};