#include <bits/stdc++.h>
using namespace std;
const int N = 25001,M = 1e9 + 7;
int n,m,k,a[N],ans,freq[N],dp[N][401],dp1[N][401];
int power(int base,int to){
	int ret = 1;
	while(to){
		if(to&1)ret = ret*1LL*base%M;
		to>>=1;
		base = base*1LL*base%M;
	}
	return ret;
}
void add(int &a,int b){
	a+=b;
	if(a >= M)a-=M;
	if(a < 0)a+=M;
}
int main(){
	//freopen("readin.txt","r",stdin);
	scanf("%d%d%d",&n,&k,&m);
	for(int i = 0;i < m;i++)scanf("%d",a + i);
	ans = (n - m + 1LL)*power(k,n - m)%M;
	bool dup = 0,good = 0;
	int has = 0;
	for(int i = 0;i < m;i++){
		if(i - k >= 0)has-=!--freq[a[i - k]];
		if(freq[a[i]]++)dup = 1;
		else has++;
		if(has == k)good = 1;
	}
	if(good)return printf("%d\n",ans),0;
	if(!dup){
		dp[0][0] = 1;
		for(int i = 1,s,e;i <= n;i++){
			s = 0,e = 0;
			for(int j = k - 1;j > 0;j--){
				add(s,dp[i - 1][j]);
				add(e,dp1[i - 1][j]);
				add(dp[i][j],dp[i - 1][j - 1]*1LL*(k - j + 1)%M);
				add(dp1[i][j],dp1[i - 1][j - 1]*1LL*(k - j + 1)%M);
				add(dp[i][j],s);
				add(dp1[i][j],e);
				if(j >= m)add(dp1[i][j],dp[i][j]);
			}
		}
		int temp = 0,a = 1,b = 1;
		for(int i = 1;i < k;i++)add(temp,dp1[n][i]);
		for(int i = 1;i <= k;i++)a = a*1LL*i%M;
		for(int i = 1;i <= k - m;i++)b = b*1LL*i%M;
		temp = temp*1LL*b%M;
		temp = temp*1LL*power(a,M - 2)%M;
		add(ans,-temp);
		printf("%d\n",ans);
	}
	else{
		int l = 0,r = 0;
		memset(freq,0,sizeof freq);
		for(int i = 0;i < m;i++)
			if(freq[a[i]]++)break;
			else l++;
		memset(freq,0,sizeof freq);
		for(int i = m - 1;i > -1;i--)
			if(freq[a[i]]++)break;
			else r++;
		dp[0][l] = dp1[0][r] = 1;
		for(int i = 0;i < n;i++){
			int s = 0,e = 0;
			for(int j = k - 1;j > 0;j--){
				add(s,dp[i][j]);
				add(e,dp1[i][j]);
				add(dp[i + 1][j + 1],dp[i][j]*1LL*(k - j)%M);
				add(dp[i + 1][j],s);
				add(dp1[i + 1][j + 1],dp1[i][j]*1LL*(k - j)%M);
				add(dp1[i + 1][j],e);
			}
		}
		for(int i = 0,s,e;i < n - m + 1;i++){
			s = 0,e = 0;
			for(int j = 1;j < k;j++)
				add(s,dp[i][j]),
				add(e,dp1[n - m - i][j]);
			add(ans,-s*1LL*e%M);
		}
		printf("%d\n",ans);
	}
}