 #include<bits/stdc++.h>
#define ll long long
#define fr(i,k,n) for(ll i = k;i<n;i++)
using namespace std;

int main(){
    
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

  ll a,b;
  long double w;
  cin>>a>>b>>w;
  ll c = w*1000;
  ll mini = LONG_MAX;
  ll maxi = LONG_MIN;
  for(ll i = 0;i<=1000000;i++){
    
      if(a*i <= c && c <= b*i){
          mini = min(mini,i);
          maxi = max(maxi,i);
      }
  }
  
  if(mini == LONG_MAX || maxi == LONG_MIN){
      cout<<"UNSATISFIABLE"<<"\n";
  }
else{
    cout<<mini<<" "<<maxi<<"\n";
}
  
}
#include <bits/stdc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
#define code                     \
	ios::sync_with_stdio(false); \
	cin.tie(0);                  \
	cout.tie(0);
#define int long long
#define endl '\n'
#define MM(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const ll MOD = 1e9 + 7;
// using namespace __gnu_pbds;
// typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1)
{
	cout << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&... args)
{
	const char *comma = strchr(names + 1, ',');
	cout.write(names, comma - names) << " : " << arg1 << " | ";
	__f(comma + 1, args...);
}

int32_t main()
{
	code;
	int a,b,c,d; cin>>a>>b>>c>>d;
    if(a==c && b==d) cout << 0 << endl;
    else if((a+b)==(c+d) || (a-b)==(c-d) || abs(a-c)+abs(b-d)<=3) cout << 1 << endl;
    else{
        if(((a+b)%2)==((c+d)%2)) cout << 2 << endl;
        else if(abs(a-c)+abs(b-d)<=6) cout << 2 << endl;
        else if (abs(a+b-c-d)<=3 || abs(a-b-c+d)<=3) cout << 2 << endl;
        else cout << 3 << endl;
    }
}
