#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;
    }
};