from __future__ import print_function import time import sys from math import pi sys.setrecursionlimit(10002) #INFILE = open('1.in') INFILE=sys.stdin from math import gcd def exgcd(a,b): x0=1;y0=0 x1=0;y1=1 x=0;y=1 ## r=a%b ## q=(a-r)/b q,r=divmod(a,b) while r: x=x0-q*x1;y=y0-q*y1 x0=x1;y0=y1 x1=x;y1=y a=b;b=r q,r=divmod(a,b) return b,x,y def equation(a,b,c): d,x,y=exgcd(a,b) if c%d: return False k=c//d x*=k;y*=k return x,y def modular_inverse(a,n): r=equation(a%n,n,1) if r: t=r[0] while t>n: t-=n while t<=0: t+=n return t else: return False def solve(w,n,d,nx): res=0 g1=gcd(n,d) n//=g1 d//=g1 n1=modular_inverse(d,n) for i in range(w//2): a,b=nx[i],nx[w-1-i] df=abs(a-b) if df%g1: # print(i,a,b,df) return 'IMPOSSIBLE' df//=g1 res+=min(df*n1%n,(n-df)*n1%n) return res def read_input(fi): read = lambda type: type(fi.readline().rstrip('\n').rstrip('\r')) readArray = lambda type: list(map(type, fi.readline().split())) readMatrix = lambda type, x: [list(map(type, fi.readline().split())) for i in range(x)] readLines = lambda type, x: [type(fi.readline().rstrip('\n').rstrip('\r')) for i in range(x)] w,n,d=readArray(int) nx=readArray(int) return (w,n,d,nx) def main(): time0 = time.time() t = int(INFILE.readline()) # _ = int(INFILE.readline()) for ti in range(t): time1 = time.time() ans = "Case #%d: %s" % (ti + 1, solve(*read_input(INFILE))) sys.stderr.write("%.3f\t" % (time.time() - time1)) print(ans) sys.stderr.write("%.3f\n" % (time.time() - time0)) if INFILE != sys.stdin: INFILE.close() if __name__ == '__main__': main() # print (check('RSP'*20)) # print(check('R'*20+'S'*20+'P'*20)) # print(check('R'*20+'S'*30+'P'*10)) # print(test(16)) # print(test1())