import sys from bisect import bisect_left, bisect_right input=lambda:sys.stdin.readline().rstrip("\r\n") MI=lambda:map(int,input().split()) li=lambda:list(MI()) ii=lambda:int(input()) class BIT: def __init__(self,n): self.n=n self.b=[0]*(n+1) def add(self,i,v): while i<=self.n: self.b[i]+=v i+=i&-i def sum(self,i): s=0 while i>0: s+=self.b[i] i-=i&-i return s def kth(self,k): i=0 p=1<<((self.n).bit_length()-1) while p: j=i+p if j<=self.n and self.b[j]>=1 return i+1 n,k,d=MI() a=li() hv=sorted(set(a)) uv=sorted(set(a+[x-d for x in a])) bc=BIT(len(hv)) bs=BIT(len(hv)) bu=BIT(len(uv)) def add(x,sgn): i=bisect_left(hv,x)+1 bc.add(i,sgn) bs.add(i,sgn*x) j=bisect_left(uv,x)+1 bu.add(j,sgn) j2=bisect_left(uv,x-d)+1 bu.add(j2,sgn) tot=0 for i in range(k): x=a[i] add(x,1) tot+=x def cur(): L=uv[bu.kth(k)-1] iL=bisect_left(hv,L) lc=bc.sum(iL) ls=bs.sum(iL) R=L+d iR=bisect_right(hv,R) le=bc.sum(iR) se=bs.sum(iR) rc=k-le sr=tot-se return lc*L-ls+sr-rc*R ans=cur() l=0 for r in range(k,n): x=a[l] add(x,-1) tot-=x l+=1 x=a[r] add(x,1) tot+=x v=cur() if v