import java.util.*;


public class Solution {
    private int size = 0;
    //因为涉及到顺序问题 所以考虑有个集合 经常操作头部 所以考虑linkedlist
    private LinkedList<HashMap<Integer, Integer>> list = new LinkedList<>();
    //因为有key value 形式 所以 集合里面放map
    public Solution(int capacity) {
        size = capacity;
    }

    public int get(int key) {
        //第一步取 取不需要删除 找到返回即可
        for (int i = 0; i < list.size(); i++) {
            HashMap<Integer, Integer> map = list.get(i);
            if (map.get(key) != null) {
                int res = map.get(key);
                //第二步 返回之前调整缓存顺序 先删除这条数据 在插入到头部
                if (i != 0) {
                    HashMap<Integer, Integer> map2 = list.remove(i);
                    list.add(0, map2);
                }
                return res;
            }
        }
        //走到这里说明没找到
        return -1;
    }

    public void set(int key, int value) {
        // 第一步存 涉及到删除操作
        for (int i = 0; i < list.size(); i++) {
            HashMap<Integer, Integer> map = list.get(i);
            if (map.get(key) != null) {
                //先把旧的删除
                list.remove(i);
                break;
            }
        }
        HashMap<Integer, Integer> map2 = new HashMap<>();
        map2.put(key,value);
        list.add(0,map2);
        
        if(list.size() > size){
            list.removeLast();
        }
    }
}

/**
 * Your Solution object will be instantiated and called as such:
 * Solution solution = new Solution(capacity);
 * int output = solution.get(key);
 * solution.set(key,value);
 */