#pragma once
#include <vector>

struct Point {
  size_t x = 0;
  size_t y = 0;

  bool operator==(const Point& other) const {
    return other.x == x && other.y == y;
  }
};

typedef std::vector<Point> PointList;

template<> struct std::hash<Point> {
  size_t operator()(const Point& p) const {
    auto hasher = std::hash<int>();
    return hasher(p.x) ^ hasher(p.y);
  }
};