#include using namespace std; #include using namespace atcoder; using ll=long long; using Graph=vector>; #define INF 1000000000000000000 #define MOD 998244353 #define MAX 1000000 ll gcd(ll a,ll b){ while(a%b!=0){ ll tmp=a%b; a=b; b=tmp; } return b; } int main(){ ll a,b,N; cin>>a>>b>>N; if(a==b||a==0||b==0){ cout<<0<<'\n'; return 0; } ll x1=a; ll y1=b; ll x2,y2; //(b*i-a*j)/(a*i+b*j)=a/b //b*(b*i-a*j)=a*(a*i+b*j) //(b*b-a*a)*i=2*a*b*j ll i=2*a*b; ll j=b*b-a*a; ll g=gcd(i,j); i/=g; j/=g; ll X=a*i+b*j; ll Y=b*i; ll ans=(max(0,N-X)%MOD)*(max(0,N-Y)%MOD)%MOD; ans=8*ans%MOD; cout<