#include <vector>
#include <set>
#include <iostream>
#include <algorithm>
#include <string>
#include <utility>

#define mod % 998244353
#define MAX 998244353
#define ll long long
using namespace std;

int main() {
  int high,wide,k;
  cin >> high;
  cin >> wide;
  cin >> k;
  ll ans = 0;
  if(high == wide and high == 1){
    cout << k mod << endl;
    return 0;
  }
  if(high == 1 or wide == 1){
    if(wide == 1){
      wide = high;
    }
    for(int i = 1;i <= k;i ++){
      int m = wide;
      vector<ll> mul(21);
      vector<ll> mult(21); 
      mul[0] = i;
      mult[0] = i-1;
      ll pl = 1;
      ll plt = 1;
      for(int j = 0;j < 20;j++){
        mul[j+1] = (mul[j]*mul[j])mod;
        mult[j+1] = (mult[j]*mult[j])mod;
        if(m % 2 == 1){
          pl = (pl*mul[j])mod;
          plt = (plt*mult[j])mod;
        }
        m = m/2;
      }
      ans = (ans+MAX+pl-plt)mod;
    }
    cout << ans mod << endl;
    
    return 0;
  }
  
  for(int i = 1;i <= k;i ++){
    ll pl = 1;
    int m = wide;
    vector<ll> mul(21);
    mul[0] = k-i+1;
    for(int j = 0;j < 20;j ++){
      mul[j+1] = (mul[j]*mul[j])mod;
      if(m % 2 == 1){
        pl = (pl*mul[j]) mod;
      }
      m = m/2;
    }
    
    ll kakerua = 1;
    ll kakerub = 1;
    
    if(i == 1){
      kakerub = 0;
    }
    m = high;
    vector<ll> mult(21);
    mul[0] = i;
    mult[0] = i-1;
    for(int j = 0;j < 20;j ++){
      mul[j+1] = (mul[j]*mul[j])mod;
      mult[j+1] = (mult[j]*mult[j])mod;
      if(m % 2 == 1){
        kakerua = (kakerua*mul[j])mod;
        kakerub = (kakerub*mult[j])mod;
      }
      m = m/2;
    }
    kakerua = (MAX-kakerub+kakerua)mod;
    pl = (pl*kakerua)mod;
    ans = (ans +pl)mod;
  }
  cout << ans mod<< endl;
  
  
  return 0;
}
#include <bits/stdc++.h>
//#include <atcoder/all>
using namespace std;
//using namespace atcoder;
typedef long long ll;
using pint = pair<int,int>;
ll mod = 1000000007,mod2 = 998244353;

int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, -1, 0, 1};

template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
//const long long INF = 1LL<<60;
int inf = 1<<30;
ll gcd(ll a,ll b){
    if(b == 0) return a;
    else return gcd(b,a%b);
}

// 小文字から大文字
char c2u(char c){return toupper(c);}
// 大文字から小文字
char u2c(char c){return tolower(c);}
// stringをintに
auto s2i(string s){return atoi(s.c_str());}

int main() {
    double x,y,z;
    cin >> x >> y >> z;
    double tmp = y/x;
    //int kake = x*y;
    //cout << tmp << endl;
    for (double i = 1; i < 100000000; ++i) {
        double tmp2 = i/z;
        if(tmp <= tmp2){
            cout << i-1 << endl;
            return 0;
        }
    }
    return 0;
}