#include<bits/stdc++.h>
#define re register
#define prt(args...) fprintf(stderr, args)
int a[200100],l1[200100],r1[200100],l2[200100],r2[200100],la[200100],nx[200100],fl[200100];
int aa[400100],q1[200100];
std::pair<int,int>q[200100];
inline bool cmp(std::pair<int,int>A,std::pair<int,int>B){return A>B;}
int main()
{
	re int n,L,ta=0;
	re long long ans=0;
	scanf("%d%d",&n,&L);
	for(re int i=1;i<=n;i++)scanf("%d",&a[i]),ans++,fl[i]=i,r1[i]=r2[i]=1,q[ta++]=std::make_pair(a[i],i),la[i]=i-1,nx[i]=i+1;
	std::make_heap(q,q+ta,cmp);
	while(ta)
	{
		re int x=q[0].second,ta1=0,j1=1;
		std::pop_heap(q,q+ta,cmp);ta--;//printf("*p*%d %d %d\n",x,q[ta].first,q[ta].second);
		if(q[ta].first!=a[x])continue;
		for(re int i1=x;i1<=n&&a[i1]==a[x];i1=nx[i1])q1[++ta1]=i1;
		if(ta1<L)continue;//printf("********%d %d %d\n",x,ta1,ta);
		for(re int i1=1;i1<=ta1;i1++)l1[i1]=l1[i1-1]+r1[q1[i1]];
		for(re int i1=ta1;i1;i1--)l2[i1]=l2[i1+1]+r2[q1[i1]];
		for(re int i1=1;i1<=ta1;i1++)
		{
			while(j1<=ta1&&(j1<i1+L-1||q1[j1]<=fl[q1[i1]]))j1++;
			if(j1>ta1)break;
			//printf("**%d %d %d %d %d %d %lld\n",i1,q1[i1],j1,q1[j1],r1[q1[i1]],l2[j1],ans);
			ans+=(long long)r1[q1[i1]]*l2[j1];
		}
		for(re int i1=1;i1*L<=ta1;i1++)
		{
			fl[q1[i1]]=q1[ta1],a[q1[i1]]++;
			r1[q1[i1]]=l1[(i1-1)*L+1+ta1%L]-l1[std::max((i1-2)*L+1+ta1%L,0)];
			r2[q1[i1]]=l1[std::min(ta1,(i1+1)*L-1)]-l1[i1*L-1];
		//	printf("******%d %d %d %d %d %d\n",i1,r1[q1[i1]],r2[q1[i1]],l1[std::min(ta1,(i1+1)*L-1)]-l1[i1*L-1],std::min(ta1,(i1+1)*L-1),i1*L-1);
		}
		for(re int i1=ta1/L+1;i1<=ta1;i1++)a[q1[i1]]++,nx[la[q1[i1]]]=nx[q1[i1]],la[nx[q1[i1]]]=la[q1[i1]];
		for(re int i1=1;i1<=ta1;i1++)l1[i1]=l2[i1]=0;
		if(a[la[q1[1]]]!=a[q1[1]])q[ta++]=std::make_pair(a[q1[1]],q1[1]),std::push_heap(q,q+ta,cmp);
	}
	printf("%lld\n",ans);
}