#include <bits/stdc++.h>
using namespace std;
long double read_ld() {
  double x;
  scanf("%lf", &x);
  return x;
}
const int MAXN = 1e5 + 10;
long double mx[MAXN];
long double mn[MAXN];
int n;
long double a[MAXN];
long double b[MAXN];
bool read() {
  if (scanf("%d", &n) < 1) {
    return false;
  }
  for (int i = 0; i < (int)n; ++i) {
    mx[i] = read_ld();
  }
  for (int i = 0; i < (int)n; ++i) {
    mn[i] = read_ld();
  }
  return true;
}
long double p[MAXN];
long double q[MAXN];
long double ans1[MAXN];
long double ans2[MAXN];
long double my_sqrt(long double x) {
  long double l = 0;
  long double r = sqrtl(max(x, (long double)0)) + 10;
  for (int it = 0; it < (int)100; ++it) {
    long double m = (l + r) * 0.5;
    if (m * m <= x) {
      l = m;
    } else {
      r = m;
    }
  }
  return (l + r) * 0.5;
}
pair<long double, long double> get(long double x, long double y) {
  long double p = (y + my_sqrt(y * y - 4 * x)) * 0.5;
  return make_pair(p, y - p);
}
void solve() {
  long double sum_mx = 0;
  for (int i = 0; i < (int)n; ++i) {
    sum_mx += mx[i];
    a[i] = sum_mx;
  }
  long double sum_mn = 0;
  for (int i = ((int)n) - 1; i >= 0; --i) {
    if (i == 0) {
      break;
    }
    b[i - 1] = 1.0 - mn[i] - sum_mn + a[i - 1];
    sum_mn += mn[i];
  }
  b[n - 1] = 2.0;
  for (int i = 0; i < (int)n; ++i) {
    long double P, Q;
    tie(P, Q) = get(a[i], b[i]);
    if (i == 0) {
      p[i] = P;
      q[i] = Q;
      continue;
    }
    p[i] = P;
    q[i] = Q;
    if (P + 1e-6 >= p[i - 1] && Q + 1e-6 >= q[i - 1]) {
      p[i] = P;
      q[i] = Q;
    } else {
      p[i] = Q;
      q[i] = P;
    }
  }
  long double s = 0;
  for (int i = 0; i < (int)n; ++i) {
    long double cur = p[i];
    if (i) cur -= p[i - 1];
    cur = max(cur, (long double)0.0);
    if (i + 1 == n) cur = 1.0 - s;
    ans1[i] = cur;
    printf("%.15f ", (double)cur);
    s += cur;
  }
  puts("");
  s = 0;
  for (int i = 0; i < (int)n; ++i) {
    long double cur = q[i];
    if (i) cur -= q[i - 1];
    cur = max(cur, (long double)0.0);
    if (i + 1 == n) cur = 1.0 - s;
    ans2[i] = cur;
    printf("%.15f ", (double)cur);
    s += cur;
  }
  puts("");
}
void gen() {
  n = 1e5 + 1;
  long double s = 0;
  for (int i = 0; i < (int)n; ++i) {
    ans1[i] = rand() & 1 ? 0 : rand();
    s += ans1[i];
  }
  if (s < 1e-9) ans1[n - 1] = 1.0, s = 1.0;
  for (int i = 0; i < (int)n; ++i) {
    ans1[i] /= s;
  }
  s = 0;
  for (int i = 0; i < (int)n; ++i) {
    ans2[i] = rand() & 1 ? 0 : rand();
    s += ans2[i];
  }
  if (s < 1e-9) ans2[n - 1] = 1.0, s = 1.0;
  for (int i = 0; i < (int)n; ++i) {
    ans2[i] /= s;
  }
  printf("gen ans:\n");
  for (int i = 0; i < (int)n; ++i) {
    printf("%.5f ", (double)ans1[i]);
  }
  puts("");
  for (int i = 0; i < (int)n; ++i) {
    printf("%.5f ", (double)ans2[i]);
  }
  puts("");
  puts("");
  mx[0] = ans1[0] * ans2[0];
  long double s1 = ans1[0];
  long double s2 = ans2[0];
  s = mx[0];
  for (int i = 1; i < n; ++i) {
    s1 += ans1[i];
    s2 += ans2[i];
    mx[i] = s1 * s2 - s;
    s += mx[i];
  }
  mn[n - 1] = ans1[n - 1] * ans2[n - 1];
  s1 = ans1[n - 1];
  s2 = ans2[n - 1];
  s = mn[n - 1];
  for (int i = ((int)n - 1) - 1; i >= 0; --i) {
    s1 += ans1[i];
    s2 += ans2[i];
    mn[i] = s1 * s2 - s;
    s += mn[i];
  }
}
long double MX[MAXN];
long double MN[MAXN];
bool check() {
  MX[0] = ans1[0] * ans2[0];
  long double s1 = ans1[0];
  long double s2 = ans2[0];
  long double s = MX[0];
  for (int i = 1; i < n; ++i) {
    s1 += ans1[i];
    s2 += ans2[i];
    MX[i] = s1 * s2 - s;
    s += MX[i];
  }
  MN[n - 1] = ans1[n - 1] * ans2[n - 1];
  s1 = ans1[n - 1];
  s2 = ans2[n - 1];
  s = MN[n - 1];
  for (int i = ((int)n - 1) - 1; i >= 0; --i) {
    s1 += ans1[i];
    s2 += ans2[i];
    MN[i] = s1 * s2 - s;
    s += MN[i];
  }
  bool fail = false;
  for (int i = 0; i < (int)n; ++i) {
    if (fabs(mn[i] - MN[i]) > 1e-6) {
      fail = true;
    }
  }
  for (int i = 0; i < (int)n; ++i) {
    if (fabs(mx[i] - MX[i]) > 1e-6) {
      fail = true;
    }
  }
  s = 0;
  for (int i = 0; i < (int)n; ++i) {
    s += ans1[i];
  }
  if (fabs(s - 1.0) > 1e-6) return false;
  s = 0;
  for (int i = 0; i < (int)n; ++i) {
    s += ans2[i];
  }
  if (fabs(s - 1.0) > 1e-6) return false;
  return !fail;
}
int main() {
  while (read()) {
    solve();
    assert(check());
  }
  return 0;
}
