output_description: For each query, print the coordinate of the projection point x. The output
  values should be in a decimal fraction with an error less than 0.00000001.
input_description: xp1 yp1 xp2 yp2
      q
      xp0 yp0
      xp1 yp1
      ...
      xpq−1 ypq−1
      
  
  In the first line, integer coordinates of p1 and p2 are given. Then, q queries
  are given for integer coordinates of p.
attempt: import math
  
  
  class Vector2:
      def __init__(self, x, y):
          self.x = x
          self.y = y
  
      def __add__(self, v):
          return Vector2(self.x + v.x, self.y + v.y)
  
      def __sub__(self, v):
          return Vector2(self.x - v.x, self.y - v.y)
  
      def __mul__(self, v):
          return Vector2(self.x * v, self.y * v)
  
      def __truediv__(self, v):
          return Vector2(self.x / v, self.y / v)
  
      def __abs__(self):
          return math.sqrt(float(self.x * self.x + self.y * self.y))
  
      def dot(self, v):
          return self.x * v.x + self.y * v.y
  
      def cross(self, v):
          return self.x * v.y - self.y * v.x
  
      def norm(self):
          d = abs(self)
          return Vector2(self.x / d, self.y / d)
  
  
  x1, y1, x2, y2 = map(int, input().split())
  v12 = Vector2(x2 - x1, y2 - y1).norm()
  q = int(input())
  for i in range(q):
      x, y = map(int, input().split())
      v = Vector2(x - x1, y - y1)
      d = v12.dot(v)
      ans = Vector2(x1 + v12.x * d, y1 + v12.y * d)
      print(f"{ans.x} {ans.y}")
  
problem_description: Projection
  
    
  
  For given three points p1, p2, p, find the projection point x of p onto p1p2.
  
  ![](https://judgeapi.u-aizu.ac.jp/resources/images/IMAGE2_CGL_CGL_1_A)
samples: [{"input": "0 0 2 0\n    3\n    -1 1\n    0 1\n    1 1", "output": "-1.0000000000 0.0000000000\n    0.0000000000 0.0000000000\n    1.0000000000 0.0000000000"}, {"input": "0 0 3 4\n    1\n    2 5", "output": "3.1200000000 4.1600000000"}]