#include <bits/stdc++.h>
using namespace std;
long long b[100007], bg[327], ed[327], need[327];
int n;
long long am[327][100007], tme[100007];
long long s[100007], m[100007], r[100007];
void build() {
  for (int i = 0; i < 327; i++) bg[i] = ed[i] = 1e18 + 7;
  bg[0] = 0;
  for (int i = 1; i < n; i++) {
    b[i] = i / 327;
    if (b[i] != b[i - 1]) {
      bg[b[i]] = i;
      ed[b[i - 1]] = i - 1;
    }
  }
  ed[b[n - 1]] = n - 1;
}
void update(int bq) {
  if (need[bq] == -1) return;
  for (int i = bg[bq]; i <= ed[bq]; i++) tme[i] = need[bq];
  need[bq] = -1;
}
long long calc(long long t, int i) {
  long long ans = min(s[i] + (t - tme[i]) * r[i], m[i]);
  s[i] = 0;
  tme[i] = t;
  return ans;
}
long long query(int t, int l, int r) {
  update(b[l]);
  update(b[r]);
  long long ans = 0;
  if (b[l] == b[r]) {
    for (int i = l; i <= r; i++) ans += calc(t, i);
    return ans;
  }
  int bl = b[l] + 1, br = b[r] - 1;
  for (int i = l; i <= ed[b[l]]; i++) ans += calc(t, i);
  need[b[l]] = -1;
  for (int i = bl; i <= br; i++) {
    if (need[i] != -1)
      ans += am[i][min((t - need[i]), 100007 - 1LL)];
    else {
      for (int j = bg[i]; j <= ed[i]; j++) ans += calc(t, j);
    }
    need[i] = t;
  }
  for (int i = bg[b[r]]; i <= r; i++) ans += calc(t, i);
  need[b[r]] = -1;
  return ans;
}
int main() {
  scanf("%d", &n);
  build();
  for (int i = 0; i < n; i++) {
    scanf("%lld %lld %lld", &s[i], &m[i], &r[i]);
    if (r[i] == 0) continue;
    int t = m[i] / r[i];
    am[b[i]][1] += r[i];
    am[b[i]][t + 1] += (m[i] % r[i]) - r[i];
    am[b[i]][t + 2] -= (m[i] % r[i]);
  }
  for (int i = 0; ed[i] != 1e18 + 7; i++) {
    need[i] = -1;
    for (int j = 2; j < 100007; j++) am[i][j] += am[i][j - 1];
    for (int j = 2; j < 100007; j++) am[i][j] += am[i][j - 1];
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    int t, l, r;
    scanf("%d %d %d", &t, &l, &r);
    l--;
    r--;
    printf("%lld\n", query(t, l, r));
  }
  return 0;
}
