#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const double pi = acos(-1.0);
int sgn(double x) {
  if (fabs(x) < eps) return 0;
  if (x < 0)
    return -1;
  else
    return 1;
}
struct node {
  double x, y;
  node() {}
  node(double _x, double _y) {
    x = _x;
    y = _y;
  }
  node operator+(const node &b) const { return node(x + b.x, y + b.y); }
  node operator-(const node &b) const { return node(x - b.x, y - b.y); }
  node operator*(double t) const { return node(x * t, y * t); }
  node operator/(double t) const { return node(x / t, y / t); }
  double operator^(const node &b) const { return x * b.y - b.x * y; }
  double operator*(const node &b) const { return x * b.x + y * b.y; }
  friend double dist(node a, node b) { return (a - b) * (a - b); }
  double length() { return sqrt(x * x + y * y); }
};
int main() {
  double a, b, c, d;
  node p;
  node v;
  scanf("%lf%lf", &p.x, &p.y);
  scanf("%lf%lf", &v.x, &v.y);
  scanf("%lf%lf%lf%lf", &a, &b, &c, &d);
  v = v / v.length();
  node ans = p + (v * b);
  printf("%.11f %.11f\n", ans.x, ans.y);
  node v2(-v.y, v.x);
  ans = p + (v2 * (a / 2));
  printf("%.11f %.11f\n", ans.x, ans.y);
  ans = p + (v2 * (c / 2));
  printf("%.11f %.11f\n", ans.x, ans.y);
  ans = ans - v * d;
  printf("%.11f %.11f\n", ans.x, ans.y);
  ans = ans - v2 * c;
  printf("%.11f %.11f\n", ans.x, ans.y);
  ans = p - v2 * (c / 2);
  printf("%.11f %.11f\n", ans.x, ans.y);
  ans = p - v2 * (a / 2);
  printf("%.11f %.11f\n", ans.x, ans.y);
}
