#include <bits/stdc++.h>
const long double pi = acos(-1.0);
struct Point {
  long double x, y;
  Point() {}
  Point(long double x, long double y) : x(x), y(y) {}
  Point operator+(const Point &a) const { return Point(x + a.x, y + a.y); }
  Point operator-(const Point &a) const { return Point(x - a.x, y - a.y); }
  Point operator*(const long double a) const { return Point(x * a, y * a); }
  Point operator/(const long double a) const { return Point(x / a, y / a); }
  void print() const { printf("%.10f %.10f\n", (double)x, (double)y); }
};
struct Line {
  Point a, b;
  Line() {}
  Line(Point a, Point b) : a(a), b(b) {}
};
int n;
long double r;
long double dist(Point a, Point b = Point(0, 0)) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
long double det(Point a, Point b) { return a.x * b.y - b.x * a.y; }
long double dot(Point a, Point b) { return a.x * b.x + a.y * b.y; }
Point getIntersection(const Line &l, const Line &r) {
  long double sA = det(r.a - l.a, l.b - l.a);
  long double sB = det(l.b - l.a, r.b - l.a);
  return r.a + (r.b - r.a) * (sA / (sA + sB));
}
Point p, v;
double a, b, c, d;
int main() {
  std::cin >> p.x >> p.y >> v.x >> v.y;
  std::cin >> a >> b >> c >> d;
  Point A = p + v * b / dist(v);
  A.print();
  Point v1 = Point(-v.y, v.x);
  Point B = p + v1 * a / 2.0 / dist(v1);
  B.print();
  Point C = p + v1 * c / 2.0 / dist(v1);
  C.print();
  Point D = C - v * d / dist(v);
  D.print();
  Point E = D - v1 * c / dist(v1);
  E.print();
  Point F = E + v * d / dist(v1);
  F.print();
  Point G = F - v1 * (a - c) / 2.0 / dist(v1);
  G.print();
  return 0;
}
