#include <bits/stdc++.h>
using namespace std;
int n, m, i, j, k, x, y, z;
double pi = M_PI;
struct Point {
  double x, y;
  Point(double x = 0, double y = 0) : x(x), y(y) {}
  void readIt() { scanf("%lf%lf", &x, &y); }
};
Point operator+(Point A, Point B) { return Point(A.x + B.x, A.y + B.y); }
Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y); }
Point operator*(Point A, double p) { return Point(A.x * p, A.y * p); }
Point operator/(Point A, double p) { return Point(A.x / p, A.y / p); }
bool operator<(const Point& a, const Point& b) {
  return a.x < b.x || (a.x == b.x && a.y < b.y);
}
const double eps = 1e-10;
int dcmp(double x) {
  if (((x) > 0 ? (x) : -(x)) < eps)
    return 0;
  else
    return x < 0 ? -1 : 1;
}
bool operator==(const Point& a, const Point& b) {
  return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
}
double Dot(Point A, Point B) { return A.x * B.x + A.y * B.y; }
double Length(Point A) { return sqrt(Dot(A, A)); }
double Cross(Point A, Point B) { return A.x * B.y - A.y * B.x; }
double Area2(Point A, Point B, Point C) { return Cross(B - A, C - A); }
Point Rotate(Point A, double rad) {
  return Point(A.x * cos(rad) - A.y * sin(rad),
               A.x * sin(rad) + A.y * cos(rad));
}
Point p, q;
Point v, v1, v2, v3, v4;
double a, b, c, d;
int main() {
  p.readIt();
  v.readIt();
  cin >> a >> b >> c >> d;
  v = v / Length(v);
  v1 = v * b;
  q = p + v1;
  printf("%.12lf %.12lf\n", q.x, q.y);
  v2 = Rotate(v, pi / 2);
  v2 = v2 * (a / 2);
  q = p + v2;
  printf("%.12lf %.12lf\n", q.x, q.y);
  v2 = v2 / Length(v2);
  v2 = v2 * (c / 2);
  q = p + v2;
  printf("%.12lf %.12lf\n", q.x, q.y);
  v3 = v * (-1);
  v3 = v3 * d;
  q = q + v3;
  printf("%.12lf %.12lf\n", q.x, q.y);
  v4 = Rotate(v, -pi / 2);
  v4 = v4 * c;
  q = q + v4;
  printf("%.12lf %.12lf\n", q.x, q.y);
  v = v * d;
  q = q + v;
  printf("%.12lf %.12lf\n", q.x, q.y);
  v = v / Length(v);
  v = Rotate(v, -pi / 2);
  v = v * (a / 2 - c / 2);
  q = q + v;
  printf("%.12lf %.12lf\n", q.x, q.y);
  return 0;
}
