input: Write a python function to implement an LRUCache class with `get` and `set` methods.
  assert lru_cache.get(1) == -1
  lru_cache.set(1, 1)
  assert lru_cache.get(1) == 1
  lru_cache.set(2, 2)
  assert lru_cache.get(2) == 2
  lru_cache.set(3, 3)
  assert lru_cache.get(1) == -1
  assert lru_cache.get(3) == 3
output: from collections import OrderedDict
  
  class LRUCache:
      def __init__(self, capacity: int):
          self.cache = OrderedDict()
          self.capacity = capacity
  
      def get(self, key: int) -> int:
          if key not in self.cache:
              return -1
          self.cache.move_to_end(key)
          return self.cache[key]
  
      def set(self, key: int, value: int) -> None:
          if key in self.cache:
              self.cache.move_to_end(key)
          self.cache[key] = value
          if len(self.cache) > self.capacity:
              self.cache.popitem(last=False)
  
  # Example usage:
  # lru_cache = LRUCache(2)
  # assert lru_cache.get(1) == -1
  # lru_cache.set(1, 1)
  # assert lru_cache.get(1) == 1
  # lru_cache.set(2, 2)
  # assert lru_cache.get(2) == 2
  # lru_cache.set(3, 3)
  # assert lru_cache.get(1) == -1
  # assert lru_cache.get(3) == 3