#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cstdio>
using namespace std;
#define ll long long 
const ll N = 2e5 + 5;
ll a[N];
ll b[N];
ll t[N];
ll gcd(ll a, ll b)
{
	return b == 0 ? a : gcd(b, a % b);
}
ll lcm(ll a, ll b)
{
	return a / gcd(a, b) * b;
}
signed main()
{
	int a, b, w;
	cin >> a >> b >> w;
	w *= 1000;
	if (w % a > b || w%a<=(b-a)*(w/a))
	{
		printf("%d %d\n", w%b==0?(w / b):(w/b+1), w/a);
	}
	else
		puts("UNSATISFIABLE");
}
#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<string>
#include<vector>
#include<set>

#define rep(i,n) for(int i = 0;i < n;i++)
using namespace std;

int main(void){

    int a,b,w;
    cin >> a >> b >> w;

    //最小値
    int min,max;

    //キログラムをグラムに変換
    w = w*1000;
    bool flag1=false,flag2=false;

    //iは個数
    for(int i=1;i<=1000*1000;i++){
        if((double)w/(double)i>=(double)a&&(double)w/i<=(double)b){
            flag1 = true;
            min = i;
            break;
        }
    }

    //最大値
    for(int i=1000*1000;i>0;i--){
        if((double)w/(double)i>=(double)a&&(double)w/(double)i<=(double)b){
            flag2 = true;
            max = i;
            break;
        }
    }

    if(flag1&flag2){
        cout << min << " "<< max << endl;
    }
    else{
        cout << "UNSATISFIABLE" << endl;
    }

    return 0;
}