Buggy python submission (verdict: Time Limit Exceeded):
import numpy as np

k,q=map(int,input().split())
D=np.array(list(map(int,input().split())),dtype="i8")

for i in range(q):
    n,x,m=map(int,input().split())
    mD=D%m #元の列のmodを取る
    a=(n-1)//k
    b=(n-1)%k
    ans=0
    cnt=x%m
    for i in range(k):
        if i<b:
            if mD[i]==0: #余り0のとき
                ans+=a+1
            else:
                cnt+=mD[i]*(a+1)
        else:
            if mD[i]==0: #余り0のとき
                ans+=a
            else:
                cnt+=mD[i]*a
    ans+=cnt//m
    print(n-1-ans)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)

Buggy python submission (verdict: Time Limit Exceeded):
import numpy as np

k,q=map(int,input().split())
D=np.array(list(map(int,input().split())),dtype="i8")

for i in range(q):
    n,x,m=map(int,input().split())
    mD=D%m #元の列のmodを取る
    a=(n-1)//k
    b=(n-1)%k
    ans=0
    ans+=(len(mD)-np.count_nonzero(mD))*a #0の数
    ans+=len(mD[:b])-np.count_nonzero(mD[:b]) #0の数
    cnt=x%m+sum(mD)*a+sum(mD[:b]) #増えた量
    ans+=cnt//m
    print(n-1-ans)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)

Buggy python submission (verdict: Time Limit Exceeded):
k,q=map(int,input().split())
D=list(map(int,input().split()))
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    a=(n-1)//k
    b=(n-1)%k
    ans=0
    ans+=mD.count(0)*a+mD[:b].count(0) #0の数
    cnt=x%m+sum(mD)*a+sum(mD[:b]) #増えた量
    ans+=cnt//m
    print(n-1-ans)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)

Buggy python submission (verdict: Time Limit Exceeded):
k,q=map(int,input().split())
D=list(map(int,input().split()))
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    ans+=mD.count(0)*((n-1)//k)+mD[:((n-1)%k)].count(0) #0の数
    cnt=x%m+sum(mD)*((n-1)//k)+sum(mD[:((n-1)%k)]) #増えた量
    ans+=cnt//m
    print(n-1-ans)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)

Buggy python submission (verdict: Time Limit Exceeded):
k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    for d in mD[:((n-1)%k)]: #mod kで余る部分
        if d==0:
            ans+=((n-1)//k)+1
        cnt+=d*(((n-1)//k)+1)
    for d in mD[((n-1)%k):]: #余らない部分
        if d==0:
            ans+=((n-1)//k)
        cnt+=d*((n-1)//k)

    ans+=cnt//m
    A.append(n-1-ans)
for a in A:
    print(a)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)

Buggy python submission (verdict: Time Limit Exceeded):
k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    ans+=mD.count(0)*((n-1)//k)+mD[:((n-1)%k)].count(0) #0の数
    cnt=x%m+sum(mD)*((n-1)//k)+sum(mD[:((n-1)%k)]) #増えた量
    ans+=cnt//m
    A.append(n-1-ans)
for a in A:
    print(a)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)

Buggy python submission (verdict: Time Limit Exceeded):
k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    ans+=mD.count(0)*((n-1)//k)+mD[:((n-1)%k)].count(0) #0の数
    cnt=x%m+sum(mD)*((n-1)//k)+sum(mD[:((n-1)%k)]) #増えた量
    ans+=cnt//m
    A.append(n-1-ans)
for a in A:
    print(a)

Fixed submission:
import sys
input = sys.stdin.readline

k,q=map(int,input().split())
D=list(map(int,input().split()))
A=[]
for i in range(q):
    n,x,m=map(int,input().split())
    mD=list(map(lambda i: i%m, D)) #元の列のmodを取る
    ans=0
    cnt=x%m
    a=(n-1)//k
    b=(n-1)%k
    for d in mD[:b]: #mod kで余る部分
        if d==0:
            ans+=a+1
        cnt+=d*(a+1)
    for d in mD[b:]: #余らない部分
        if d==0:
            ans+=a
        cnt+=d*a
    ans+=cnt//m
    print(n-1-ans)