#include <bits/stdc++.h>
using namespace std;
const long double PI = acosl(-1);
const int MAXN = 1e4;
pair<long double, long double> a[MAXN + 42];
long double dist[MAXN + 42], ang[MAXN + 42];
pair<long double, long double> get_centroid(int n) {
  long double sig_area = 0.0;
  pair<long double, long double> centroid{0.0, 0.0};
  for (int i = 0; i < n; ++i) {
    pair<long double, long double> l = a[i], r = a[(i + 1) % n];
    long double mass = (l.first * r.second - l.second * r.first);
    sig_area += mass;
    centroid.first += mass * (l.first + r.first);
    centroid.second += mass * (l.second + r.second);
  }
  sig_area *= 0.5;
  centroid.first /= 6.0 * sig_area;
  centroid.second /= 6.0 * sig_area;
  return centroid;
}
long double get_dist(pair<long double, long double> &a,
                     pair<long double, long double> &b) {
  return sqrtl((a.first - b.first) * (a.first - b.first) +
               (a.second - b.second) * (a.second - b.second));
}
pair<long double, long double> get_point(int id,
                                         pair<long double, long double> &centr,
                                         const long double &angle) {
  pair<long double, long double> p;
  p.first = centr.first + dist[id] * cosl(ang[id] + angle);
  p.second = centr.second + dist[id] * sinl(ang[id] + angle);
  return p;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  int n, q;
  cin >> n >> q;
  long double ox, oy;
  for (int i = 0; i < n; ++i) {
    cin >> a[i].first >> a[i].second;
    if (!i) ox = a[0].first, oy = a[0].second;
    a[i].first -= ox, a[i].second -= oy;
  }
  pair<long double, long double> centroid = get_centroid(n);
  for (int i = 0; i < n; ++i) {
    dist[i] = get_dist(a[i], centroid);
    ang[i] = atan2l(a[i].second - centroid.second, a[i].first - centroid.first);
    while (ang[i] < 0) ang[i] += 2 * PI;
  }
  pair<long double, long double> nxt, top;
  long double angle = 0.0;
  int i = 0, j = 1;
  while (q--) {
    int type;
    cin >> type;
    if (type == 1) {
      int f, t;
      cin >> f >> t;
      --f, --t;
      if (f == i) {
        i = t;
        top = get_point(j, centroid, angle);
        nxt = {top.first, top.second - dist[j]};
      } else {
        j = t;
        top = get_point(i, centroid, angle);
        nxt = {top.first, top.second - dist[i]};
      }
      angle += -PI / 2 -
               atan2l(centroid.second - top.second, centroid.first - top.first);
      while (angle < 0) angle += 2 * PI;
      while (angle > 2 * PI) angle -= 2 * PI;
      centroid = nxt;
    } else {
      int first;
      cin >> first;
      --first;
      pair<long double, long double> p = get_point(first, centroid, angle);
      cout << setprecision(10) << fixed << (p.first + ox) << ' '
           << (p.second + oy) << "\n";
    }
  }
}
