#include <bits/stdc++.h>
using namespace std;
template <class T, class L>
bool smax(T &x, L y) {
  return x < y ? (x = y, 1) : 0;
}
template <class T, class L>
bool smin(T &x, L y) {
  return y < x ? (x = y, 1) : 0;
}
const int maxn = 1e5 + 17;
const long double G = 9.8;
int n, v, m;
long double a[maxn];
int mellat[maxn], ptr;
pair<long double, long double> l[maxn], ans[maxn];
long double sina_says_chraaaa[maxn];
long double tg[maxn], k[maxn];
long double y(int i, long double x) { return tg[i] * x - x * x * k[i]; }
void fill_cache() {
  for (int i = 0; i < n; i++) tg[i] = tan(a[i]);
  for (int i = 0; i < n; i++) k[i] = G / (2 * v * v * cos(a[i]) * cos(a[i]));
}
void get_end() {
  for (int ptr = 0; ptr < n; ptr++) {
    long double lo = 0, hi = 1;
    while (y(mellat[ptr], hi) >= 0) hi *= 2;
    for (int t = 0; t < 100; t++) {
      long double mid1 = lo + (hi - lo) / 3, mid2 = hi - (hi - lo) / 3;
      if (y(mellat[ptr], mid1) > y(mellat[ptr], mid2))
        hi = mid2;
      else
        lo = mid1;
    }
    lo = (lo + hi) / 2, hi = 1;
    while (y(mellat[ptr], hi) >= 0) hi *= 2;
    for (int t = 0; t < 100; t++) {
      long double mid = (hi + lo) / 2;
      (y(mellat[ptr], mid) >= 0 ? lo : hi) = mid;
    }
    sina_says_chraaaa[mellat[ptr]] = (lo + hi) / 2;
  }
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> v;
  for (int i = 0; i < n; i++) cin >> a[i];
  fill_cache();
  cin >> m;
  for (int i = 0; i < m; i++) cin >> l[i].first >> l[i].second;
  sort(l, l + m);
  iota(mellat, mellat + n, 0);
  get_end();
  sort(mellat, mellat + n,
       [](int &i, int &j) { return y(i, l[0].first) < y(j, l[0].first); });
  for (int i = 0; i < m; i++)
    for (; ptr < n && y(mellat[ptr], l[i].first) < l[i].second; ptr++) {
      long double x = min(l[i].first, sina_says_chraaaa[mellat[ptr]]);
      ans[mellat[ptr]] = {x, y(mellat[ptr], x)};
    }
  for (; ptr < n; ptr++) ans[mellat[ptr]] = {sina_says_chraaaa[mellat[ptr]], 0};
  cout << fixed << setprecision(5);
  for (int i = 0; i < n; i++)
    cout << ans[i].first << ' ' << ans[i].second << '\n';
  return 0;
}
