T=int(input()) #No. of test case
a=[]
b=[]
c=[]
f=[]
z=[]
m=[]
R=[]
x1=0
y1=0
x2=0
y2=0
h=0;
temp=0;
e=0;
v=0;
while T>0:
f=[]
m=[]
n,r=list(map(int,input().split()))
l=list(map(int,input().split()))
for i in range(n):
R.append(l[i])
z.append(i+1)
for i in range(n):
if i+1==n:
break
else:
e=z[i+1]-z[i];
if e==0:
f.append(0)
else:
f.append((R[i+1]-R[i])/e)
for i in range(r):
x1,x2,y1,y2=list(map(int,input().split()))
v=x2-x1
if(v==0):
m.append(0)
else:
m.append((y2-y1)/(x2-x1))
for i in range(len(m)):
temp=int(m[i])
for j in range(len(f)):
if temp==f[j] and j<len(f):
h+=1
print(h)
h=0
f.clear()
m.clear()
R.clear()
z.clear()
T=T-1
VD1pbnQoaW5wdXQoKSkgI05vLiBvZiB0ZXN0IGNhc2UgIAphPVtdCmI9W10KYz1bXQpmPVtdCno9W10KbT1bXQpSPVtdCngxPTAKeTE9MAp4Mj0wCnkyPTAKaD0wOwp0ZW1wPTA7CmU9MDsKdj0wOwoKd2hpbGUgVD4wOgogICAgZj1bXQogICAgbT1bXQogICAgCiAgICBuLHI9bGlzdChtYXAoaW50LGlucHV0KCkuc3BsaXQoKSkpCiAgICAKICAgIGw9bGlzdChtYXAoaW50LGlucHV0KCkuc3BsaXQoKSkpCiAgICAKICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgIFIuYXBwZW5kKGxbaV0pCiAgICAgICAgei5hcHBlbmQoaSsxKQogICAgICAgIAogICAgZm9yIGkgaW4gcmFuZ2Uobik6CiAgICAgICAgaWYgaSsxPT1uOgogICAgICAgICAgYnJlYWsKICAgICAgICBlbHNlOgogICAgICAgICAgZT16W2krMV0teltpXTsKICAgICAgICBpZiBlPT0wOgogICAgICAgICAgICBmLmFwcGVuZCgwKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGYuYXBwZW5kKChSW2krMV0tUltpXSkvZSkKICAgIAogICAgCiAgICBmb3IgaSBpbiByYW5nZShyKToKICAgICAgICB4MSx4Mix5MSx5Mj1saXN0KG1hcChpbnQsaW5wdXQoKS5zcGxpdCgpKSkKICAgICAgICB2PXgyLXgxCiAgICAgICAKICAgICAgICBpZih2PT0wKToKICAgICAgICAgICAgbS5hcHBlbmQoMCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBtLmFwcGVuZCgoeTIteTEpLyh4Mi14MSkpCiAgICAKICAgIAogIAogICAgZm9yIGkgaW4gcmFuZ2UobGVuKG0pKToKICAgICAgICB0ZW1wPWludChtW2ldKQogICAgICAgIGZvciBqIGluIHJhbmdlKGxlbihmKSk6CiAgICAgICAgICAgIGlmIHRlbXA9PWZbal0gYW5kIGo8bGVuKGYpOgogICAgICAgICAgICAgICAgaCs9MQogICAgICAgIAogICAgICAgIHByaW50KGgpCiAgICAgICAgaD0wCiAgICBmLmNsZWFyKCkKICAgIG0uY2xlYXIoKQogICAgUi5jbGVhcigpCiAgICB6LmNsZWFyKCkKICAgICAgICAKICAgIFQ9VC0xCiAgICAK