#include <bits/stdc++.h>
using namespace std;
pair<double, double> get_vec_rotate(pair<double, double> nv, double fi) {
  return make_pair(nv.first * cos(fi) - nv.second * sin(fi),
                   nv.second * cos(fi) + nv.first * sin(fi));
}
pair<double, double> get_normal(pair<double, double> vec) {
  double len = sqrt(vec.first * vec.first + vec.second * vec.second);
  vec.first /= len;
  vec.second /= len;
  return vec;
}
pair<double, double> end_p(pair<double, double> start_p,
                           pair<double, double> nv, double len) {
  nv.first *= len;
  nv.second *= len;
  return make_pair(nv.first + start_p.first, nv.second + start_p.second);
}
double a, b, c, d;
pair<double, double> p, v, ToWrite;
pair<double, double> len_fi[7];
int main() {
  cin >> p.first >> p.second >> v.first >> v.second >> a >> b >> c >> d;
  v = get_normal(v);
  len_fi[0].first = b;
  len_fi[0].second = 0;
  len_fi[1].first = a / 2;
  len_fi[1].second = M_PI / 2;
  len_fi[2].first = c / 2;
  len_fi[2].second = M_PI / 2;
  len_fi[3].first = sqrt(c * c + 4 * d * d) / 2;
  len_fi[3].second = M_PI / 2 + atan(2 * d / c);
  len_fi[4].first = sqrt(c * c + 4 * d * d) / 2;
  len_fi[4].second = 3 * M_PI / 2 - atan(2 * d / c);
  len_fi[5].first = c / 2;
  len_fi[5].second = 3 * M_PI / 2;
  len_fi[6].first = a / 2;
  len_fi[6].second = 3 * M_PI / 2;
  cout.precision(10);
  for (int i = 0; i < 7; i++) {
    ToWrite = end_p(p, get_vec_rotate(v, len_fi[i].second), len_fi[i].first);
    cout << fixed << ToWrite.first << ' ' << ToWrite.second << endl;
  }
  return 0;
}
