n, m = gets.not_nil!.split.map(&.to_i) segtree0 = Array.new(2 * m, 0_i64) segtree1 = Array.new(2 * m, 0_i64) a = Array.new(n, 0_i64) l_arr = Array.new(n, 0) r_arr = Array.new(n, 0) c_arr = Array.new(n, 0) res = 0_i64 n.times do |i| input = gets.not_nil!.split.map(&.to_i) a[i] = input[0].to_i64 l_arr[i] = input[1] - 1 r_arr[i] = input[2] segtree1[m + i] = a[i] res += (r_arr[i] - l_arr[i]) * a[i] c_arr[i] = i l = m + l_arr[i] r = m + r_arr[i] while l < r if l.odd? segtree0[l] += 1 l += 1 end if r.odd? r -= 1 segtree0[r] += 1 end l //= 2 r //= 2 end end (m - 1).downto(1) do |i| segtree1[i] = segtree1[i << 1] + segtree1[(i << 1) | 1] end n.times do |i| l = m + l_arr[i] r = m + r_arr[i] while l < r if l.odd? res -= segtree1[l] l += 1 end if r.odd? r -= 1 res -= segtree1[r] end l //= 2 r //= 2 end end q = gets.not_nil!.to_i q.times do input = gets.not_nil!.split.map(&.to_i) i = input[0] - 1 res -= (r_arr[i] - l_arr[i]) * a[i] pos = m + c_arr[i] while pos > 0 res += segtree0[pos] * a[i] segtree1[pos] -= a[i] pos //= 2 end l = m + l_arr[i] r = m + r_arr[i] while l < r if l.odd? segtree0[l] -= 1 res += segtree1[l] l += 1 end if r.odd? r -= 1 segtree0[r] -= 1 res += segtree1[r] end l //= 2 r //= 2 end input = gets.not_nil!.split.map(&.to_i) c_arr[i] = input[0] - 1 l_arr[i] = input[1] - 1 r_arr[i] = input[2] res += (r_arr[i] - l_arr[i]) * a[i] pos = m + c_arr[i] while pos > 0 res -= segtree0[pos] * a[i] segtree1[pos] += a[i] pos //= 2 end l = m + l_arr[i] r = m + r_arr[i] while l < r if l.odd? segtree0[l] += 1 res -= segtree1[l] l += 1 end if r.odd? r -= 1 segtree0[r] += 1 res -= segtree1[r] end l //= 2 r //= 2 end puts res end