#include <bits/stdc++.h>
using namespace std;
struct vec {
  double x, y;
};
vec normalize(vec up) {
  double inv_length = 1.0f / sqrt(up.x * up.x + up.y * up.y);
  up.x *= inv_length;
  up.y *= inv_length;
  return up;
}
void solve() {
  double px, py, vx, vy, a, b, c, d;
  cin >> px >> py >> vx >> vy >> a >> b >> c >> d;
  vec up = {vx, vy}, nup = {-vy, vx}, tmp;
  up = normalize(up);
  nup = normalize(nup);
  vector<vec> ans;
  tmp = {px + up.x * b, py + up.y * b};
  ans.push_back(tmp);
  tmp = {px + nup.x * (a / 2.0), py + nup.y * (a / 2.0)};
  ans.push_back(tmp);
  tmp = {px + nup.x * (c / 2.0), py + nup.y * (c / 2.0)};
  ans.push_back(tmp);
  tmp = {px + nup.x * (c / 2.0) - up.x * d, py + nup.y * (c / 2.0) - up.y * d};
  ans.push_back(tmp);
  tmp = {px - nup.x * (c / 2.0) - up.x * d, py - nup.y * (c / 2.0) - up.y * d};
  ans.push_back(tmp);
  tmp = {px - nup.x * (c / 2.0), py - nup.y * (c / 2.0)};
  ans.push_back(tmp);
  tmp = {px - nup.x * (a / 2.0), py - nup.y * (a / 2.0)};
  ans.push_back(tmp);
  for (auto& q : ans) {
    printf("%.10f %.10f\n", q.x, q.y);
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  solve();
  return 0;
}
