/**
*    author:  yuya1234
*    created: 17.10.2020 20:15:10
**/

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

#define REP(i,n) for(ll i=0;i<(ll)(n);i++)
#define REPD(i,n) for(ll i=n-1;i>=0;i--)
#define FOR(i,a,b) for(ll i=a;i<=(ll)(b);i++)
#define FORD(i,a,b) for(ll i=a;i>=(ll)(b);i--)

#define SORT(x) sort(x.begin(),x.end())
#define SORTD(x) sort(x.rbegin(),x.rend())
#define UNIQUE(v) v.erase( unique(v.begin(), v.end()), v.end() );
#define SZ(x) ll(x.size())

#define MEMSET(v, h) memset((v), h, sizeof(v))

template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }
int gcd(int a,int b){return b?gcd(b,a%b):a;}

vector< ll > divisor(ll n) {
  vector< ll > ret;
  for(ll i = 1; i * i <= n; i++) {
    if(n % i == 0) {
      ret.push_back(i);
      if(i * i != n) ret.push_back(n / i);
    }
  }
  sort(begin(ret), end(ret));
  return (ret);
}

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

  ll n;
  cin>>n;

  vector<ll> ret;

  ret=divisor(n);

  REP(i,SZ(ret))
  {
    cout<<ret[i]<<endl;
  } 

  return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
//#include <Windows.h>
#include<unordered_map>
//#include"testlib.h"
using namespace std;
//<DEFINE>
void Fast() {
    ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
}
void File() {
#ifndef ONLINE_JUDGE
   /* HWND Stealth;
    AllocConsole();
    Stealth = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(Stealth, 0);*/
    freopen("Input.txt", "r", stdin);
    freopen("Output.txt", "w", stdout);
#endif
}
#ifdef _MSC_VER
#include <intrin.h>
#define __builtin_popcount __popcnt
#ifdef _WIN64
#define __builtin_popcountll __popcnt64
#else
inline int __builtin_popcountll(__int64 a) {
    return __builtin_popcount((unsigned int)a) + __builtin_popcount(a >> 32);
}
#endif
#endif
using ll = long long;
using ull = unsigned long long;
#define mod 1000000007
ll gcd(ll a, ll b) {
    return!b ? a : gcd(b, a % b);
}
#define fix(n) cout << fixed << setprecision(n);
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define skip continue
#define pi  acos(-1)
#define endl "\n"
//#define ceil(x,y) (((x)+(y)-1)/(y))
#define clr(v,d) memset(v, d, sizeof v)
//sin(x*pi/180)
//alot of memset may cause TLE
#define TC int t$$t$;cin>>t$$t$;while(t$$t$--)
//</DEFINE>
int dx[] = { 0,0,-1,1,1,1,-1,-1 };
int dy[] = { 1,-1,0,0,1,-1,1,-1 };
//***********stop when you reach the concept of don't stop***********
//<FUNCTIONS>	
struct point
{
    ll x, y;
    point() {}
    point(ll x, ll y) :x(x), y(y) {}
};
double getDis(point a, point b) {
    return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}
void solve() {
    ll r, x, y;
    cin >> r >> x >> y;
    fix(0);
    if (getDis(point(0, 0), point(x, y)) < r)cout << 2;
    else
        cout << ceil(getDis(point(0, 0), point(x, y)) / r);
}
//</FUNCTIONS>	
int main() {
    Fast();
    File();
    solve();
}