#include<bits/stdc++.h>
 
 
#define  all(v)            v.begin(), v.end()
#define  sz(x)             (int)x.size()
#define  debug(x)          cout << #x << ':' << x << endl;
#define  rep(i,n)          for(long long i = 0; i <  n ; i++)
#define  reps(i,n)         for(long long i = 1; i <= n ; i++)
#define  make_unique(v)    sort(all(v));v.erase(unique(all(v)), v.end());
#define  REMOVE(v,a)       v.erase(remove(v.begin(),v.end(), a), v.end());
#define  pb                push_back
#define  mp                make_pair
#define  endl              '\n'
#define  fi                first
#define  se                second
 
 
using namespace std;
typedef long long          ll;
typedef vector<long long>  vll;
typedef pair<ll,ll>        pll;
const ll MOD = 1e9+7;
bool cmp(int X, int Y) {return X > Y;}
 
ll gcd(ll a, ll b) {return !b ? a : gcd(b, a % b);}
ll lcm(ll a, ll b) {return (a / gcd(a, b)) * b;}
ll modpow(ll a, ll b, ll m=MOD){a %= m; ll res = 1; while (b) {if (b & 1)res = (res * a) % m; a = (a * a) % m; b >>= 1;} return res;}
ll bpow(ll a, ll b){if(b<0){return 0;}ll res = 1; while (b) {if (b & 1)res = res * a; a = a * a; b >>= 1;} return res;}
ll modinv(ll a, ll m = MOD) {return modpow(a, m - 2, m);}
 
const int N = 100005;
const int dx4[4] = {0, 1, 0, -1};
const int dy4[4] = {-1, 0, 1, 0};
 
ll vis[N];

ll fact(ll x){
  ll res = 1;
  for(ll i = 1; i<=x ; i++){
    res*=i;
    res = (res+MOD)%MOD;
  }
  return res;
}




int main(){ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

	ll n,w;cin>>n>>w;
	ll k = n/w;
	cout<<k<<endl;
	

}













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

int main() {
  int N, M;
  cin >> N >> M;
  vector<vector<bool>> graph(N, vector<bool>(N, false));
  for (int i = 0; i < M; ++i) {
    int from, to;
    cin >> from >> to;
    --from; --to;  // Convert to 0-based.
    graph[from][to] = true;
    graph[to][from] = true;
  }

  const int INFTY = N + 1;
  // dpv[mask] = min number of cliques you need
  // to include all of the nodes that are set in the mask
  vector<int> dpv(1 << N, INFTY);
  dpv[0] = 0;
  // O(N ^ 2 * 2 ^ N + 3 ^ N) 
  for (int mask = 1; mask < (1 << N); ++mask) {
    // Check whether this mask can form one clique.
    bool valid = true;
    // Loop over every pair of set bits.
    for (int bit1 = 0; bit1 < N; ++bit1) {
      if (mask & (1 << bit1)) {
        for (int bit2 = bit1 + 1; bit2 < N; ++bit2) {
          if (mask & (1 << bit2)) {
            if (!graph[bit1][bit2]) {
              valid = false;
            }
          }
        }
      }
    }

    if (valid) {
      dpv[mask] = 1;
    } else {
      // Transition: consider all submasks.
      for (int submask = mask; submask > 0; submask = (submask - 1) & mask) {
        dpv[mask] = min(dpv[mask], dpv[submask] + dpv[mask - submask]);
      }
    }
  }
  cout << dpv.back() << endl;
}