#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#include<bitset>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<map>
#include<set>
#include<stack>
#include<cmath>
#include<sstream>
#include<fstream>
#include<iomanip>
#include<ctime>
#include<complex>
#include<functional>
#include<climits>
#include<cassert>
#include<iterator>
#include<random>
#include<unordered_set>
#include<unordered_map>

using namespace std;
#define MAX 10000002
int h;
int w;
int k;
#define MOD 1000000007

long long int p2[MAX];
long long int c[1002][1002];
int main() {
	c[0][0] = 1;
	for (int i = 0; i < 1000; i++) {
		for (int j = 0; j <=i; j++) {
			c[i+1][j + 1] += c[i][j];
			c[i + 1][j] += c[i][j];
			c[i+1][j + 1] %= MOD;
			c[i + 1][j] %= MOD;
		}
	}
	p2[0] = 1;
	for (int i = 1; i < MAX; i++) {
		p2[i] = p2[i - 1];
		p2[i] *= 2;
		p2[i] %= MOD;
	}
	cin >> h >> w >> k;
	long long int ans = 0;
	for (int i = 0; i <= k; i++) {
		for (int j = 0; j <= k - a-1; j++) {
			//inc
			int rest = k - i - j - 1;
			ans += (c[i+j][i]*(i + j+2)%MOD)*(p2[rest+1]-1);
			ans %= MOD;
		}
	}
	printf("%lld\n", ans);
	return 0;
}