#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;

#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<(to);x++)
#define FORR(x,arr) for(auto& x:arr)
#define FORR2(x,y,arr) for(auto& [x,y]:arr)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
template<class T> bool chmax(T &a, const T &b) { if(a<b){a=b;return 1;}return 0;}
template<class T> bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;}
//-------------------------------------------------------

int H,W,K;
const ll mo=998244353;
ll dp[202020];

ll modpow(ll a, ll n = mo-2) {
	ll r=1;a%=mo;
	while(n) r=r*((n%2)?a:1)%mo,a=a*a%mo,n>>=1;
	return r;
}

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>H>>W>>K;
	
	ll ret=0;
	if(H==1) {
		ret=modpow(K,W);
	}
	else if(W==1) {
		ret=modpow(K,H);
	}
	else {
		for(i=1;i<=K;i++) {
			dp[i]=modpow(i,H);
		}
		for(i=K;i>=1;i--) {
			(dp[i]+=mo-dp[i-1])%=mo;
			(ret+=dp[i]*modpow(K+1-i,W))%=mo;
		}
	}
	
	
	cout<<ret<<endl;
	
	
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false), cin.tie(0);
	FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	cout.tie(0); solve(); return 0;
}

#define LOCAL0
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
double el[100005], er[100005], suml[200005], sumr[200005], sumk[200005];
int n, m, k;
map<int, int> tag;
int main()
{
	#ifdef LOCAL
		freopen("in.txt", "r", stdin);
    	freopen("out.txt", "w", stdout);
	#endif
	cin >> n >> m >> k;
	int temp;
	for(int i=1; i<=k; i++){
		cin >> temp;
		tag[temp] = 1;
	}
	for(int i=1; i<=n+m; i++){
		sumk[i] = sumk[i-1]+tag[i];
	}
	for(int i=n-1; i>=0; i--){
		if(sumk[i+m]-sumk[i]==m){
			cout << "-1";
			return 0;
		}
		if(!tag[i]){
			el[i] = (suml[i+1]-suml[i+m+1]+m)/m;
			er[i] = (sumr[i+1]-sumr[i+m+1]+sumk[i+m]-sumk[i])/m;
			suml[i] = suml[i+1]+el[i];
			sumr[i] = sumr[i+1]+er[i];
		}
		else{
			suml[i] = suml[i+1];
			sumr[i] = sumr[i+1];
		}
	}
	printf("%.5f", el[0]/(1-er[0]));
	//cout << setpresion(5)<< ;
	return 0;
}