#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using vi = vector<int>;
using vll = vector<ll>;
using vull = vector<ull>;
using ii = pair<int, int>;
using ib = pair<int, bool>;
using pll = pair<ll, ll>;
using pld = pair<ld, ld>;
using vpii = vector<ii>;
using vpll = vector<pll>;
using vpld = vector<pld>;
using pq = priority_queue<ii, vpii, greater<ii> >;
struct cmpl {
  bool operator()(const pair<int, int> &l, const int &r) { return l.first < r; }
};
struct cmpu {
  bool operator()(const int &r, const pair<int, int> &l) { return l.first > r; }
};
struct cmpls {
  bool operator()(const pair<int, int> &l, const int &r) {
    return l.second < r;
  }
};
struct cmpus {
  bool operator()(const int &r, const pair<int, int> &l) {
    return l.second > r;
  }
};
ll powmod(ll base, ll exponent, ll MOD) {
  ll ans = 1;
  while (exponent) {
    if (exponent & 1) ans = (ans * base) % MOD;
    base = (base * base) % MOD;
    exponent >>= 1;
  }
  return ans;
}
bool is_in(ll x, ll y, ll n, ll m) {
  return ((x >= 1) && (x <= n) && (y >= 1) && (y <= m));
}
ll n;
void solve() {
  cin >> n;
  cout << (n / 2) + 1 << endl;
}
void cleaner() {}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  solve();
  return 0;
}
