#include<bits/stdc++.h>
#define mod 1000000007
using namespace std;
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
int f[25005][405],g[25005][405],a[25005],n,m,K,ans,aft[405],vis[405],flag,lgg,rgg;
inline int pow(int x,int k)
{
    int res=1;
    for(;k;k>>=1,x=1LL*x*x%mod) if(k&1) res=1LL*res*x%mod;
    return res;
}
int main()
{
    n=read();K=read();m=read();
    for(int i=1;i<=m;++i) a[i]=read();
    for(int i=1;i+K-1<=m;++i)
    {
        int tot=0;
        for(int j=0;j<K;++j) if(vis[a[i+j]]!=i) vis[a[i+j]]=i,++tot;
        if(tot==K) {flag=1;break;}
    }
    ans=1LL*pow(K,n-m)*(n-m+1)%mod;
    if(flag) return 0*printf("%d\n",ans);
    for(int i=1;i<=m;++i) if(vis[a[i]]!=n+1) vis[a[i]]=n+1; else {lgg=i;break;}
    for(int i=m;i>=1;--i) if(vis[a[i]]!=n+2) vis[a[i]]=n+2; else {rgg=i;break;}
    for(int i=1;i<K;++i) f[0][i]=1,g[0][i]=i;
    for(int i=1;i<=n;++i) for(int j=1;j<K;++j)
    {
        f[i][j]=(1LL*(K-j)*f[i-1][j+1]+g[i-1][j])%mod;
        g[i][j]=(g[i][j-1]+f[i][j])%mod;
    }
    for(int i=1;i+m-1<=n;++i)
        if(lgg) ans=(ans-1LL*f[i-1][lgg-1]*f[n-(i+m-1)][m-rgg]%mod+mod)%mod;
        else for(int j=i+m,p=1;j-i<K&&j<=n+1;++j)
        {
            ans=(ans-1LL*f[i-1][j-i]*(j>n?1:g[n-j][j-i])%mod*p%mod+mod)%mod;
            p=1LL*p*(K-m-(j-(i+m)))%mod;
        }
    cout<<ans;
    return 0;
}