#include <bits/stdc++.h>
using namespace std;
int n;
long double V;
long double vx[111111], vy[111111];
int m, N;
struct point {
  long double x, y;
  bool operator<(const point &b) const {
    return (x != b.x) ? (x < b.x) : (y > b.y);
  }
} ans[111111], a[111111];
pair<long double, int> k[111111], b[111111], c[111111];
long double cs[111111];
int main() {
  double V2;
  scanf("%d%lf", &n, &V2);
  V = V2;
  for (int i = 1; i <= n; ++i) {
    double ang;
    scanf("%lf", &ang);
    long double t = ang;
    long double x = cos(t) * V * sin(t) * V / (0.5 * (9.8));
    ans[i].x = x;
    ans[i].y = 0;
    k[i] = make_pair(tan(ang), i);
  }
  scanf("%d", &m);
  long double mn = 1e9;
  int arc = 0;
  for (int i = 1; i <= m; ++i) {
    double x, y;
    scanf("%lf%lf", &x, &y);
    a[i].x = x;
    a[i].y = y;
    long double A = 0.5 * (9.8) * x * x;
    long double B = -x * V * V;
    long double C = 0.5 * x * x * (9.8) + y * V * V;
    long double D = B * B - 4 * A * C;
    if (D < 0) {
      if (x < mn) {
        mn = x;
        arc = i;
      }
    } else {
      b[++N] = make_pair((sqrt(D) - B) / 2 / A, i);
      c[N] = make_pair((-sqrt(D) - B) / 2 / A, i);
    }
  }
  sort(k + 1, k + 1 + n);
  sort(b + 1, b + 1 + N);
  int j = 0;
  long double mn2 = mn;
  for (int i = 1; i <= n; ++i) {
    for (; j < N && b[j + 1].first <= k[i].first;) {
      ++j;
      mn = min(a[b[j].second].x, mn);
    }
    int pos = k[i].second;
    if (mn < ans[pos].x) {
      ans[pos].x = mn;
      ans[pos].y = mn * k[i].first - 0.5 * (9.8) * mn * mn *
                                         (1 + k[i].first * k[i].first) / V / V;
    }
  }
  sort(c + 1, c + 1 + N);
  j = N + 1;
  mn = mn2;
  for (int i = n; i >= 1; --i) {
    for (; j > 1 && c[j - 1].first >= k[i].first;)
      mn = min(a[c[--j].second].x, mn);
    int pos = k[i].second;
    if (mn < ans[pos].x) {
      ans[pos].x = mn;
      ans[pos].y = mn * k[i].first - 0.5 * (9.8) * mn * mn *
                                         (1 + k[i].first * k[i].first) / V / V;
    }
  }
  for (int i = 1; i <= n; ++i) {
    double x = ans[i].x, y = ans[i].y;
    printf("%lf %lf\n", x, y);
  }
}
