#include <bits/stdc++.h>
#define int long long
// #include <atcoder/all>
// using namespace atcoder;
// using mint = modint1000000007;
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
constexpr int MOD = 998244353;
constexpr int INF = numeric_limits<int>::max() / 2;
typedef pair<int,int> P;
using Graph = vector<vector<int>>;
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 double PI = acos(-1.0);
// cout << fixed << setprecision(14);

int modpow(int x, int n, int mod) {
    int res = 1;
    while (n > 0) {
        if (n & 1) {  // nが奇数のとき
            res *= x;
            res %= mod;
        }
        x *= x;
        x %= mod;
        n >>= 1;
    }
    return res;
}

signed main() {
    int N, M, K;
    cin >> N >> M >> K;
    if(N==1 && M==1){
        cout << K << endl;
        return 0;
    }
    if(N==1){
        cout << modpow(K,M,MOD) << endl;
        return 0;
    }
    if(M==1){
        cout << modpow(K,N,MOD) << endl;
        return 0;
    }
    int ans = 0;
    int mi[K+2]{}, ma[K+2]{};
    int mis[K+2]{}, mas[K+2]{};
    for(int i=1;i<=K;i++){
        int miZ = modpow(i,N,MOD);
        mi[i] = (miZ + MOD - mi[i-1]) % MOD;
    }
    for(int i=K;i>=1;i--){
        int maZ = modpow((K-i+1), M, MOD);
        ma[i] = (maZ + MOD - ma[i+1]) % MOD;
    }
    for(int i=1;i<=K;i++){
        ans += (modpow(i,N,MOD) - modpow(i-1,N,MOD) + MOD) * modpow((K-i+1), M, MOD);
        ans %= MOD;
    }
    cout << ans << endl;
    /*
    for(auto c : mi) cout << c << " ";
    for(auto c : ma) cout << c << " ";
    */
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;

#define F(type, i, a, b, incr) for (type i = a; i <= (type)(b); i += (type)(incr))
#define pb push_back
#define ppb pop_back
#define ff first
#define ss second
#define iter(it, s) for (auto it = s.begin(); it != s.end(); it++)
#define fillc(a,b) memset(a,b,sizeof(a))
#define MOD 1000000007
#define INF 1e17
void check(ll a,ll b,ll c)
{
	double la,lb;
	if(a==0)
		la=-INF;
	else
		la=c*log(a);
	if(b==0)
		lb=-INF;
	else
		lb=c*log(b);
	//cout<<setprecision(10)<<la<<" "<<lb<<endl;
	if(la<lb)
		cout<<"<"<<endl;
	else if(la>lb)
		cout<<">"<<endl;
	else
		cout<<"="<<endl;
}

void solve()
{
	ll a,b,c;
	cin>>a>>b>>c;
	if(a==b)
	{
		cout<<"="<<endl;
		return;
	}
	if(c%2)
	{
		if(a<0 && b>=0)
		{
			cout<<"<"<<endl;
			return;
		}
		else if(a>=0 && b<0)
		{
			cout<<">"<<endl;
			return;
		}
		else if(a<0 && b<0)
		{
			check(abs(b),abs(a),c);
			return;
		}
	}
	a=abs(a);
	b=abs(b);
	check(a,b,c);
}

int main()
{
    //freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
        solve();
}