#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const long long LINF = 1e18;
const long double EPS = 1e-10;
const long double PI = 3.141592653589;
struct point {
  long double x, y;
  point() { x = y = 0; }
  point(long double a, long double b) {
    x = a;
    y = b;
  }
  point operator+(const point& b) { return point(x + b.x, y + b.y); }
  point operator-(const point& b) { return point(x - b.x, y - b.y); }
  point rotleft() { return point(-y, x); }
  point rotright() { return point(y, -x); }
  long double len() { return sqrt(x * x + y * y); }
  point norm() {
    long double l = len();
    return point(x / l, y / l);
  }
  point operator*(long double a) { return point(x * a, y * a); }
};
int main() {
  ios::sync_with_stdio(false);
  point start;
  point to;
  long double a, b, c, d;
  cin >> start.x >> start.y >> to.x >> to.y >> a >> b >> c >> d;
  to = to.norm();
  point tmp = start + to * b;
  cout << fixed;
  cout.precision(12);
  cout << tmp.x << " " << tmp.y << endl;
  tmp = start + to.rotleft() * (a / 2);
  cout << tmp.x << " " << tmp.y << endl;
  tmp = start + to.rotleft() * (c / 2);
  cout << tmp.x << " " << tmp.y << endl;
  tmp = (start + to.rotleft() * (c / 2)) + to.rotleft().rotleft() * d;
  cout << tmp.x << " " << tmp.y << endl;
  tmp = (start + to.rotleft() * (c / 2)) + to.rotleft().rotleft() * d +
        to.rotright() * c;
  cout << tmp.x << " " << tmp.y << endl;
  tmp = start + to.rotright() * (c / 2);
  cout << tmp.x << " " << tmp.y << endl;
  tmp = start + to.rotright() * (a / 2);
  cout << tmp.x << " " << tmp.y << endl;
  return 0;
}
