#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;

LL mod = 998244353;

LL N , M , K;

LL qpow(LL a , LL b) {
	LL res = 1;
	while(b) {
		if(b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}

int main() {
	scanf("%lld %lld %lld" , &N , &M , &K);
	if(N == 1 || M == 1) {
		printf("%lld" , qpow(K , max(N , M)));
		return 0;
	}
	LL ans = 0;
	for (int i = 1; i <= K; ++i) {
		ans = (ans + (qpow(i , N) - qpow(i - 1 , N) + mod) % mod * qpow(K - i + 1 , M) % mod) % mod;
	}
	printf("%lld" , ans);
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;

 
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define rep(i,n) for (int i=1;i <=int(n);i++)
#define rrep(i,n) for(int i= int(n);i>=1;i--)
#define ffor(i,n) for (int i=0;i <int(n);i++)

#define pii pair<int,int>
#define type pair<pair<ll,ll>,pair<ll,ll>>
 
int a[1001],b[1001];
int main(){
     ios_base::sync_with_stdio(false);
     cin.tie(NULL);
     int n,d,h; cin >> n >> d >> h;
     rep(i,n){
          cin >> a[i] >> b[i];
     }
   
     
     double ans = 0;
     rep(i,n){
          double res = (h - b[i]) * double(d)/(d-a[i]);
          ans = max (ans,h-res);
     }
   
     cout << ans << '\n';
     
     
return 0;
}

 //check for bounds
