#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 10;
const long long INF = 1e9 + 10;
struct node {
  long long l, r, ans;
};
vector<node> t;
long long n, m, i, x, y;
pair<long long, long long> ans[N];
map<long long, long long> name;
multiset<pair<long long, long long> > st;
pair<long long, long long> get(long long v, long long l, long long r,
                               long long va) {
  if (l == r) return {l, t[v].ans};
  if (t[v].l == -1) t[v].l = t.size(), t.push_back({-1, -1, 0});
  if (t[v].r == -1) t[v].r = t.size(), t.push_back({-1, -1, 0});
  long long c = (l + r) / 2;
  if (t[t[v].l].ans >= va) return get(t[v].l, l, c, va);
  if (t[t[v].r].ans >= va) return get(t[v].r, c + 1, r, va);
  return {-1, -1};
}
void modify(long long v, long long l, long long r, long long p, long long va) {
  if (l == r)
    t[v].ans = va;
  else {
    long long c = (l + r) / 2;
    if (t[v].l == -1) t[v].l = t.size(), t.push_back({-1, -1, 0});
    if (t[v].r == -1) t[v].r = t.size(), t.push_back({-1, -1, 0});
    if (p <= c)
      modify(t[v].l, l, c, p, va);
    else
      modify(t[v].r, c + 1, r, p, va);
    t[v].ans = max(t[t[v].l].ans, t[t[v].r].ans);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  t.push_back({-1, -1, 0});
  cin >> n >> m;
  for (i = 1; i <= n; ++i) {
    cin >> x >> y;
    ++x;
    name[x] = i;
    ans[i].second = y;
    modify(0, 0, INF, x, x + y);
  }
  while (m--) {
    cin >> x >> y;
    ++x;
    pair<long long, long long> p = get(0, 0, INF, x);
    if (p.first <= x && p.first != -1) {
      long long pos = name[p.first], k = 1;
      p.second += y;
      while (st.size()) {
        auto it = st.lower_bound(make_pair(p.first, 0));
        if (it != st.end() && (*it).first <= p.second) {
          p.second += (*it).second, k++;
          st.erase(it);
        } else
          break;
      }
      modify(0, 0, INF, p.first, p.second);
      ans[pos].first += k;
      ans[pos].second = p.second - p.first;
    } else
      st.insert({x, y});
  }
  for (i = 1; i <= n; ++i) {
    cout << ans[i].first << " " << ans[i].second << endl;
  }
}
