// Problem: C - Compass Walking
// Contest: AtCoder - AtCoder Beginner Contest 198
// URL: https://atcoder.jp/contests/abc198/tasks/abc198_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define vi vector<int>
#define pii pair<int, int>
#define pll pair<long long, long long>

const int p = 1e9 + 7;
const int lim = 1e6;

// //Number theory
// int facto[lim];
// void prefacto(){
	// facto[0]=0;
	// for(int i=1; i<=lim; i++)
		// facto[i] = (facto[i-1]*i)%p;
// }

// //Graph theory
// vi status(lim, 0);
// vi adj[lim];
// void edgeInput(int m){
	// for(int i=1; i<=m; i++){
		// int a, b;
		// cin>>a>>b;
		// adj[a].push_back(b);
		// adj[b].push_back(a);
	// }
// }

//Binary search
bool check(int elem){
	return true;
}
void bsearch(){
	int lo=0, hi=1e9, res=-1, mid;
	while(lo<=hi){
		mid = lo + (hi-lo)/2;
		if(check(mid)){
			res = mid;
			hi = mid-1;
		}else{
			lo = mid+1;
		}
	}
}

//Custom comparator
struct Node{};
struct Compare{
	bool operator() (const Node &a, const Node &b){
		return true;
	}
};
bool compare(const Node &a, const Node &b){
	return true;
}

void pre_io(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);cout.tie(NULL);
}

int32_t main()
{
	pre_io();
	ll r, x, y;
	cin>>r>>x>>y;
	ll dsq = x*x + y*y;
	ll divo = r*r;
	ll quo = dsq/divo, rt = sqrt(quo);
	if(rt*rt*divo==dsq){
		cout<<rt;
	}else{
		cout<<rt+1+(rt==0);
	}
}
#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>

using namespace std;

using ll = long long;
using ull = unsigned long long;
using db = double; using str = string;
using pi = pair<int,int>;
using vi = vector<int>; using vs = vector<str>;
using vl = vector<ll>; using vd = vector<double>;
using vvi = vector<vector<int>>;
using vvs = vector<vector<string>>;
using vvl = vector<vector<ll>>;
using vvd = vector<vector<double>>;
using pqi = priority_queue<int>;
using rpqi = priority_queue<int, vi, greater<int>>;
using umi = unordered_map<int, int>;
using usi = unordered_set<int>;

#define PB push_back
#define PF push_front
#define PK pop_back()
#define PT pop_front()
#define EB emplace_back
#define LB lower_bound
#define UB upper_bound
#define UM unordered_map
#define US unordered_set
#define PQ priority_queue
#define VT vector
#define se second
#define fi first
#define rt return
#define ln "\n"
#define ctu continue
#define F1(e) for(int i=0;i<(e);++i)
#define F2(i,e) for(int i=0;i<(e);++i)
#define F3(i,b,e) for(int i=(b);i<(e);++i)
#define F4(i,b,e,s) for(int i=(b); (s)>0?i<(e):i>(e); i+=(s))
#define Sum(a) accumulate((a).begin(), (a).end() , 0ll);
#define Min(a) *std::min_element((a).begin(), (a).end())
#define Max(a) *std::max_element((a).begin(), (a).end())
#define Sort(c) sort((c).begin(), (c).end())
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define each(x,a) for(auto& x : a)
#define all(c) (c).begin(), (c).end()
#define rall(a) rbegin(a),rend(a)
#define mst(a,x) memset(a, x, sizeof(a))
#define to_unique(a) a.erase(unique(begin(a), end(a)), end(a))
#define bct(x) (__builtin_popcountll(x))
#define in(x, a) a.find((x)) != a.end()
#define sz(x) ((int)(x).size())
#define sort_unique(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
#define isok(x, y) (x >= 0 && x < n && y >= 0 && y < m && !vis[x][y])

const ll mod = 1e9 + 7;
const double PI=acos(-1.0);
const int fx[4] = {1, 0, -1, 0}, fy[4] = {0, 1, 0, -1};
const int dx[8]={-1, -1, 0, 1, 1, 1, 0, -1}, dy[8]={0, 1, 1, 1, 0, -1, -1, -1};

template<class A> void read(VT<A>& v);
template<class T> void read(T& x) { cin >> x; }
template<class H, class... T> void read(H& h, T&... t) {
	read(h); read(t...);
}
template<class A> void read(VT<A>& x) {
	each(a, x) read(a);
}

template<class A> void wte(A x) {cout << x;}
template<class H, class... T> void wte(const H& h, const T&... t) {
	wte(h); cout<<' '; wte(t...);
}
template<class A> void wte(VT<A>& x) {
    bool f=1;
	each(a, x){
	    if(f==1) {
	        wte(a); f=0;
	    } else wte(' '),wte(a);
	}
}

int main() {
    IOS;
    vi a(3);
    read(a);
    Sort(a);
    if(a[0]==a[1]) cout<<a[2]<<ln;
    else if(a[2]==a[1]) cout<<a[0]<<ln;
    else cout<<0<<ln;
    return 0;
}