#include <bits/stdc++.h>
using namespace std;
struct pt {
  long double x, y;
  pt() {}
  pt(long double x, long double y) : x(x), y(y) {}
  pt operator+(const pt& other) const { return {x + other.x, y + other.y}; }
  pt operator-(const pt& other) const { return {x - other.x, y - other.y}; }
  pt operator*(long double k) const { return {x * k, y * k}; }
};
long double cross(const pt& p, const pt& q) { return p.x * q.y - p.y * q.x; }
long double dist(const pt& a, const pt& b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
pt rot(const pt& p, long double a) {
  a = -a;
  long double s = sin(a), c = cos(a);
  return {c * p.x - s * p.y, s * p.x + c * p.y};
}
pt calc(long double a, pt center, pt initC, pt init, long double anglei,
        long double angle0) {
  long double d = a + anglei - angle0;
  pt ans = {0, 1};
  ans = rot(ans, d);
  ans = ans * dist(init, initC);
  ans = ans + center;
  return ans;
}
long double dot(const pt& p, const pt& q) { return p.x * q.x + p.y * q.y; }
pt f(vector<pt> p) {
  int n = (int)(p).size();
  pt s = p[0];
  for (int i = 0; i < (int)(p).size(); ++i) {
    p[i] = p[i] - s;
  }
  pt center = {0, 0};
  long double area = 0;
  for (int i = 0; i < n; ++i) {
    area += cross(p[i], p[(i + 1) % n]);
  }
  area = abs(area) / 2;
  for (int i = 0; i < n; ++i) {
    pt u = p[i], v = p[(i + 1) % n];
    center.x += (u.x + v.x) * cross(u, v);
    center.y += (u.y + v.y) * cross(u, v);
  }
  center.x /= area * 6, center.y /= area * 6;
  return center + s;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, q;
  cin >> n >> q;
  vector<pt> p(n);
  for (int i = 0; i < n; ++i) {
    cin >> p[i].x >> p[i].y;
  }
  pt center = f(p);
  pt c = center;
  vector<long double> angle(n);
  for (int i = 0; i < n; ++i) {
    pt u = {0, 1};
    pt v = p[i] - center;
    angle[i] = atan2(cross(v, u), dot(v, u));
  }
  cout << fixed;
  cout.precision(20);
  int x = 0, y = 1;
  long double a = angle[0];
  while (q--) {
    int tp;
    cin >> tp;
    if (tp == 2) {
      int i;
      cin >> i;
      --i;
      pt ans = calc(a, center, c, p[i], angle[i], angle[0]);
      cout << ans.x << " " << ans.y << "\n";
    } else {
      int pr, nx;
      cin >> pr >> nx;
      --pr, --nx;
      if (pr == y) {
        swap(x, y);
      }
      pt t = calc(a, center, c, p[y], angle[y], angle[0]);
      pt dir = {0, -1};
      center = t + dir * dist(p[y], c);
      a = angle[0] - angle[y];
      x = nx;
    }
  }
}
