#define task "CONSTRUCT"
 
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <cassert>
 
using namespace std;
 
using ll = long long;
using ld = long double;
 
constexpr int N = 1e5 + 5;
int n;
ll x[N], y[N];
ld a[N], b[N];
 
void Read()
{
    cin >> n;
 
    for (int i = 1; i <= n; ++i)
        cin >> x[i] >> y[i];
}
 
ld SolveEquation(ll c1, ll c2)
{
    // assert(!((c1 + c2) & 1));
    return (ld)1.0 * (c1 + c2) / 2;
}
 
void Cal(ll x[N], ld a[N], int n)
{
    ll tmp = 0;
 
    for (int i = 1; i < n; ++i)
        if (i & 1)
            tmp = tmp + x[i] * 2;
        else
            tmp = tmp - x[i] * 2;
 
    a[1] = SolveEquation(x[n] * 2, tmp);
 
    for (int i = 2; i <= n; ++i)
        a[i] = x[i - 1] * 2 - a[i - 1];
}
 
void Constrain_4(ll x[N], ld a[N])
{
    ld I2 = (x[1] + x[2]) / 2.0,
       I3 = (x[2] + x[3]) / 2.0,
       I4 = (x[3] + x[4]) / 2.0,
       I1 = (x[4] + x[1]) / 2.0,
       I = (x[1] + x[3]) / 2.0;
 
    // a_1 + I = 2I1 => a_1 = 2I1 - I
 
    a[1] = 2 * I1 - I;
    a[2] = 2 * I2 - I;
    a[3] = 2 * I3 - I;
    a[4] = 2 * I4 - I;
}
 
void Solve()
{
    if (n == 4)
    {
        Constrain_4(x, a);
        Constrain_4(y, b);
 
        for (int i = 1; i <= n; ++i)
            cout << fixed << setprecision(2) << a[i] << " " << b[i] << "\n";
    }
    else
    {
        Cal(x, a, n);
        Cal(y, b, n);
 
        for (int i = 1; i <= n; ++i)
            cout << fixed << setprecision(2) << a[i] << " " << b[i] << "\n";
    }
}
 
int32_t main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    if (fopen(task ".INP", "r"))
    {
        freopen(task ".INP", "r", stdin);
        freopen(task ".OUT", "w", stdout);
    }
 
    Read();
    Solve();
}
 
				I2RlZmluZSB0YXNrICJDT05TVFJVQ1QiCiAKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNhc3NlcnQ+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdXNpbmcgbGQgPSBsb25nIGRvdWJsZTsKIApjb25zdGV4cHIgaW50IE4gPSAxZTUgKyA1OwppbnQgbjsKbGwgeFtOXSwgeVtOXTsKbGQgYVtOXSwgYltOXTsKIAp2b2lkIFJlYWQoKQp7CiAgICBjaW4gPj4gbjsKIAogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKQogICAgICAgIGNpbiA+PiB4W2ldID4+IHlbaV07Cn0KIApsZCBTb2x2ZUVxdWF0aW9uKGxsIGMxLCBsbCBjMikKewogICAgLy8gYXNzZXJ0KCEoKGMxICsgYzIpICYgMSkpOwogICAgcmV0dXJuIChsZCkxLjAgKiAoYzEgKyBjMikgLyAyOwp9CiAKdm9pZCBDYWwobGwgeFtOXSwgbGQgYVtOXSwgaW50IG4pCnsKICAgIGxsIHRtcCA9IDA7CiAKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgKytpKQogICAgICAgIGlmIChpICYgMSkKICAgICAgICAgICAgdG1wID0gdG1wICsgeFtpXSAqIDI7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0bXAgPSB0bXAgLSB4W2ldICogMjsKIAogICAgYVsxXSA9IFNvbHZlRXF1YXRpb24oeFtuXSAqIDIsIHRtcCk7CiAKICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47ICsraSkKICAgICAgICBhW2ldID0geFtpIC0gMV0gKiAyIC0gYVtpIC0gMV07Cn0KIAp2b2lkIENvbnN0cmFpbl80KGxsIHhbTl0sIGxkIGFbTl0pCnsKICAgIGxkIEkyID0gKHhbMV0gKyB4WzJdKSAvIDIuMCwKICAgICAgIEkzID0gKHhbMl0gKyB4WzNdKSAvIDIuMCwKICAgICAgIEk0ID0gKHhbM10gKyB4WzRdKSAvIDIuMCwKICAgICAgIEkxID0gKHhbNF0gKyB4WzFdKSAvIDIuMCwKICAgICAgIEkgPSAoeFsxXSArIHhbM10pIC8gMi4wOwogCiAgICAvLyBhXzEgKyBJID0gMkkxID0+IGFfMSA9IDJJMSAtIEkKIAogICAgYVsxXSA9IDIgKiBJMSAtIEk7CiAgICBhWzJdID0gMiAqIEkyIC0gSTsKICAgIGFbM10gPSAyICogSTMgLSBJOwogICAgYVs0XSA9IDIgKiBJNCAtIEk7Cn0KIAp2b2lkIFNvbHZlKCkKewogICAgaWYgKG4gPT0gNCkKICAgIHsKICAgICAgICBDb25zdHJhaW5fNCh4LCBhKTsKICAgICAgICBDb25zdHJhaW5fNCh5LCBiKTsKIAogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkKICAgICAgICAgICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMikgPDwgYVtpXSA8PCAiICIgPDwgYltpXSA8PCAiXG4iOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIENhbCh4LCBhLCBuKTsKICAgICAgICBDYWwoeSwgYiwgbik7CiAKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDIpIDw8IGFbaV0gPDwgIiAiIDw8IGJbaV0gPDwgIlxuIjsKICAgIH0KfQogCmludDMyX3QgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKHRhc2sgIi5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4odGFzayAiLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayAiLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KIAogICAgUmVhZCgpOwogICAgU29sdmUoKTsKfQog