#include <bits/stdc++.h>
using namespace std;
void a() {
  int n;
  cin >> n;
  cout << "25";
}
void b() {
  int n, t;
  cin >> n >> t;
  double pow[40];
  pow[0] = 1.000000011;
  for (int i = 1; i < 40; i++) pow[i] = pow[i - 1] * pow[i - 1];
  double res = (double)n;
  for (int i = 0; i < 40; i++) {
    if (t % 2 == 1) res *= pow[i];
    t /= 2;
  }
  cout.precision(12);
  cout << fixed << res;
}
void c() {
  int n;
  cin >> n;
  long long res = 1;
  for (int i = 0; i < n + 1; i++) res *= 2;
  res -= 2;
  cout << res;
}
void d() {
  long long n;
  cin >> n;
  long long res = 1ll + 3ll * n * (n + 1);
  cout << res;
}
void e() {
  long long x1, y1, x2, y2;
  cin >> x1 >> y1 >> x2 >> y2;
  long long col1 = (y2 - y1 + 1) / 2;
  if (x1 % 2 == y1 % 2 && y1 % 2 == y2 % 2) col1++;
  long long col2 = (y2 - y1 + 1) / 2;
  if ((x1 + 1) % 2 == y1 % 2 && y1 % 2 == y2 % 2) col2++;
  long long res = (col1 + col2) * (x2 - x1) / 2 + col1;
  cout << res;
}
void f() {
  int n;
  cin >> n;
  long long over = 1;
  long long res = 0;
  for (int i = 1; i <= 7; i++) {
    over *= (long long)(n - i + 1);
    over /= (long long)i;
    if (i >= 5) res += over;
  }
  cout << res;
}
void g() {
  int n;
  cin >> n;
  long long over[6];
  over[1] = (long long)n;
  for (int i = 2; i <= 5; i++) {
    over[i] = (over[i - 1] * (n - i + 1)) / i;
  }
  long long f1 = over[3] + 2 * over[2] + over[1];
  long long f2 = over[5] + 4 * over[4] + 6 * over[3] + 4 * over[2] + over[1];
  long long res = f1 * f2;
  cout << res;
}
void h() {
  int n;
  cin >> n;
  long long res = 1ll;
  for (int i = 0; i < 5; i++) {
    res *= (long long)n - i;
    res /= (long long)i + 1;
  }
  for (int i = 0; i < 5; i++) res *= (long long)n - i;
  cout << res;
}
void i() {
  int n;
  cin >> n;
  long long res = 24 + 9 * (n - 3);
  for (int i = 0; i < n - 3; i++) res *= 4ll;
  cout << res;
}
void j() {
  long long n;
  cin >> n;
  long long div = 2520;
  ;
  long long res = n / div;
  cout << res;
}
void k() {
  long long n;
  cin >> n;
  long long base = 0;
  for (int i = 1; i <= 2520; i++) {
    bool div = false;
    for (int j = 2; j <= 10; j++) {
      if (i % j == 0) div = true;
    }
    if (!div) base++;
  }
  long long res = (n / 2520ll) * base;
  for (long long i = (n / 2520ll) * 2520ll + 1ll; i <= n; i++) {
    bool div = false;
    for (int j = 2; j <= 10; j++) {
      if (i % j == 0) div = true;
    }
    if (!div) res++;
  }
  cout << res;
}
void l() {
  string a, s;
  cin >> a;
  s += a[0];
  s += a[2];
  s += a[4];
  s += a[3];
  s += a[1];
  long long num = (s[0] - '0') * 10000 + (s[1] - '0') * 1000 +
                  (s[2] - '0') * 100 + (s[3] - '0') * 10 + (s[4] - '0');
  long long pot = 1ll;
  for (int i = 0; i < 5; i++) {
    pot = (pot * num) % 100000;
  }
  int res[5];
  for (int i = 0; i < 5; i++) {
    res[5 - i - 1] = pot % 10;
    pot /= 10;
  }
  for (int i = 0; i < 5; i++) {
    cout << res[i];
  }
}
void m() {
  long long x;
  cin >> x;
  x = -x;
  x = (x % 360ll + 360ll) % 360ll;
  int res = 0;
  while (x > 45ll && x < 315ll) {
    res++;
    x += 90ll;
  }
  cout << res;
}
void n() {
  int a, b, c;
  cin >> a >> b >> c;
  double res = ((double)(-b)) / ((double)(2 * a)) +
               sqrt((double)(b * b - 4 * a * c)) / ((double)2 * abs(a));
  cout.precision(12);
  cout << fixed << res << endl;
  res = ((double)(-b)) / ((double)(2 * a)) -
        sqrt((double)(b * b - 4 * a * c)) / ((double)2 * abs(a));
  cout << fixed << res << endl;
}
void o() {
  cout.precision(12);
  int px, py, vx, vy;
  cin >> px >> py >> vx >> vy;
  int a, b, c, d;
  cin >> a >> b >> c >> d;
  double dx, dy;
  dx = ((double)vx) / sqrt((double)(vx * vx + vy * vy));
  dy = ((double)vy) / sqrt((double)(vx * vx + vy * vy));
  double x, y;
  x = px + dx * b;
  y = py + dy * b;
  cout << fixed << x << " " << y << endl;
  double save = dx;
  dx = -dy;
  dy = save;
  x = px + dx * a / 2.0;
  y = py + dy * a / 2.0;
  cout << fixed << x << " " << y << endl;
  x = px + dx * c / 2.0;
  y = py + dy * c / 2.0;
  cout << fixed << x << " " << y << endl;
  save = dx;
  dx = -dy;
  dy = save;
  x += dx * d;
  y += dy * d;
  cout << fixed << x << " " << y << endl;
  save = dx;
  dx = -dy;
  dy = save;
  x += dx * c;
  y += dy * c;
  cout << fixed << x << " " << y << endl;
  x = px + dx * c / 2.0;
  y = py + dy * c / 2.0;
  cout << fixed << x << " " << y << endl;
  x = px + dx * a / 2.0;
  y = py + dy * a / 2.0;
  cout << fixed << x << " " << y << endl;
}
void q() {
  int l3, l4, l5;
  cin >> l3 >> l4 >> l5;
  double v3 = (sqrt(2.0) * l3 * l3 * l3) / 12.0;
  double v4 = (sqrt(2.0) * l4 * l4 * l4) / 6.0;
  double r = (sqrt(25.0 + 10.0 * sqrt(5.0)) * l5) / 10.0;
  double h = sqrt(3.0 * l5 * l5 / 4.0 - r * r);
  double v5 = ((sqrt(25.0 + 10.0 * sqrt(5.0)) * l5 * l5) / 4.0) * h / 3.0;
  double res = v3 + v4 + v5;
  cout.precision(12);
  cout << fixed << res;
}
void r() {
  long long n;
  cin >> n;
  if (n % 2 == 0)
    cout << "2";
  else
    cout << "1";
}
int main() { o(); }
