def main():
import sys
input = sys.stdin.read
data = input().split()
index = 0
t = int(data[index])
index += 1
results = []
for _ in range(t):
n = int(data[index])
index += 1
a = list(map(int, data[index:index + n]))
index += n
count = 0
diff_count = {} # 用于统计差值出现的次数
for i in range(n):
# 计算当前元素与位置(i+1)的差值
# 原题中i,j是数学上的1-based索引,所以这里用i+1
curr_diff = a[i] - (i + 1)
# 之前已经有多个相同差值的元素,每个都能与当前元素形成有效对
if curr_diff in diff_count:
count += diff_count[curr_diff]
# 更新当前差值的出现次数(放在后面处理,确保i<j的顺序)
diff_count[curr_diff] = diff_count.get(curr_diff, 0) + 1
results.append(str(count))
sys.stdout.write("\n".join(results) + "\n")
if __name__ == "__main__":
main()
ZGVmIG1haW4oKToKICAgIGltcG9ydCBzeXMKICAgIGlucHV0ID0gc3lzLnN0ZGluLnJlYWQKICAgIGRhdGEgPSBpbnB1dCgpLnNwbGl0KCkKICAgIAogICAgaW5kZXggPSAwCiAgICB0ID0gaW50KGRhdGFbaW5kZXhdKQogICAgaW5kZXggKz0gMQogICAgcmVzdWx0cyA9IFtdCiAgICAKICAgIGZvciBfIGluIHJhbmdlKHQpOgogICAgICAgIG4gPSBpbnQoZGF0YVtpbmRleF0pCiAgICAgICAgaW5kZXggKz0gMQogICAgICAgIGEgPSBsaXN0KG1hcChpbnQsIGRhdGFbaW5kZXg6aW5kZXggKyBuXSkpCiAgICAgICAgaW5kZXggKz0gbgogICAgICAgIAogICAgICAgIGNvdW50ID0gMAogICAgICAgIGRpZmZfY291bnQgPSB7fSAgIyDnlKjkuo7nu5/orqHlt67lgLzlh7rnjrDnmoTmrKHmlbAKICAgICAgICAKICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKICAgICAgICAgICAgIyDorqHnrpflvZPliY3lhYPntKDkuI7kvY3nva7vvIhpKzHvvInnmoTlt67lgLwKICAgICAgICAgICAgIyDljp/popjkuK1pLGrmmK/mlbDlrabkuIrnmoQxLWJhc2Vk57Si5byV77yM5omA5Lul6L+Z6YeM55SoaSsxCiAgICAgICAgICAgIGN1cnJfZGlmZiA9IGFbaV0gLSAoaSArIDEpCiAgICAgICAgICAgIAogICAgICAgICAgICAjIOS5i+WJjeW3sue7j+acieWkmuS4quebuOWQjOW3ruWAvOeahOWFg+e0oO+8jOavj+S4qumDveiDveS4juW9k+WJjeWFg+e0oOW9ouaIkOacieaViOWvuQogICAgICAgICAgICBpZiBjdXJyX2RpZmYgaW4gZGlmZl9jb3VudDoKICAgICAgICAgICAgICAgIGNvdW50ICs9IGRpZmZfY291bnRbY3Vycl9kaWZmXQogICAgICAgICAgICAKICAgICAgICAgICAgIyDmm7TmlrDlvZPliY3lt67lgLznmoTlh7rnjrDmrKHmlbDvvIjmlL7lnKjlkI7pnaLlpITnkIbvvIznoa7kv51pPGrnmoTpobrluo/vvIkKICAgICAgICAgICAgZGlmZl9jb3VudFtjdXJyX2RpZmZdID0gZGlmZl9jb3VudC5nZXQoY3Vycl9kaWZmLCAwKSArIDEKICAgICAgICAKICAgICAgICByZXN1bHRzLmFwcGVuZChzdHIoY291bnQpKQogICAgCiAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIuam9pbihyZXN1bHRzKSArICJcbiIpCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbWFpbigp