#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimization("unroll-loops")
const int N = 2e5 + 5;
const long long int mod = 1e9 + 7;
const long long int Mod = 998244353;
const long double Pi = acos(-1);
const long long int Inf = 4e18;
int dx[9] = {0, 1, -1, 0, 0, 1, 1, -1, -1};
int dy[9] = {0, 0, 0, 1, -1, 1, -1, 1, -1};
using namespace std;
struct Point {
  long double x, y;
} A, B, C, D, E, F, G, H;
struct Point Find(long double px, long double py, long double vx,
                  long double vy, long double l) {
  long double xx, yy, u, v, m;
  if (vx == 0) {
    xx = px;
    if (vy > 0)
      yy = py + l;
    else
      yy = py - l;
  } else if (vy == 0) {
    yy = py;
    if (vx > 0)
      xx = px + l;
    else
      xx = px - l;
  } else {
    m = vy / vx;
    u = (l * l) / (1 + m * m);
    v = u * m * m;
    if (vy > 0 && vx > 0) {
      xx = px + sqrt(u);
      yy = py + sqrt(v);
    } else if (vy > 0 && vx < 0) {
      xx = px - sqrt(u);
      yy = py + sqrt(v);
    } else if (vy < 0 && vx < 0) {
      xx = px - sqrt(u);
      yy = py - sqrt(v);
    } else {
      xx = px + sqrt(u);
      yy = py - sqrt(v);
    }
  }
  return {xx, yy};
}
void TestCase() {
  long double px, py, vx, vy, a, b, c, d;
  cin >> px >> py >> vx >> vy >> a >> b >> c >> d;
  A = Find(px, py, vx, vy, b);
  long double mx1 = 0, my1 = 0, mx2 = 0, my2 = 0;
  if (vx == 0) {
    if (vy > 0) {
      mx1 = -1;
      mx2 = 1;
    } else {
      mx1 = 1;
      mx2 = -1;
    }
  } else if (vy == 0) {
    if (vx > 0) {
      my1 = 1;
      my2 = -1;
    } else {
      my1 = -1;
      my2 = 1;
    }
  } else {
    if (vx > 0 && vy > 0) {
      mx1 = -1 * vy, my1 = vx;
      mx2 = vy, my2 = -1 * vx;
    } else if (vx < 0 && vy > 0) {
      mx1 = -1 * vy, my1 = vx;
      mx2 = vy, my2 = -1 * vx;
    } else if (vx < 0 && vy < 0) {
      mx1 = -1 * vy, my1 = vx;
      mx2 = vy, my2 = -1 * vx;
    } else {
      mx1 = -1 * vy, my1 = vx;
      mx2 = vy, my2 = -1 * vx;
    }
  }
  F = Find(px, py, -1 * vx, -1 * vy, d);
  B = Find(px, py, mx1, my1, a / 2.0);
  G = Find(px, py, mx1, my1, c / 2.0);
  C = Find(F.x, F.y, mx1, my1, c / 2.0);
  D = Find(F.x, F.y, mx2, my2, c / 2.0);
  H = Find(px, py, mx2, my2, c / 2.0);
  E = Find(px, py, mx2, my2, a / 2.0);
  struct Point pts[7] = {A, B, G, C, D, H, E};
  for (int i = 0; i < 7; i++)
    cout << fixed << setprecision(15) << pts[i].x << " " << pts[i].y << "\n";
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  int T = 1;
  while (T--) {
    TestCase();
    cout << "\n";
  }
  return 0;
}
