#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using PII = std::pair<int, int>;
using PLL = std::pair<ll, ll>;
const int mod = 1e9 + 7;
const string wsp = " ";
const string tb = "\t";
const string rt = "\n";
void showvec(vector<int> v) {
  for (int i = 0; i < (int)(v.size() - 1); i++) {
    cout << v[i] << wsp;
  }
  cout << v[v.size() - 1] << rt;
}
class Unionfind {
  vector<int> p;
  vector<int> q;

 public:
  int find(int x);
  void unite(int x, int y);
  Unionfind(int n);
  vector<int> outputfriends();
};
Unionfind::Unionfind(int n) {
  for (int i = 0; i < n; i++) {
    p.push_back(i);
  }
  q.resize(n);
  fill(q.begin(), q.end(), 1);
}
int Unionfind::find(int x) {
  while (p[x] != x) {
    p[x] = p[p[x]];
    x = p[x];
  }
  return x;
}
void Unionfind::unite(int x, int y) {
  x = Unionfind::find(x);
  y = Unionfind::find(y);
  if (x != y) {
    p[x] = y;
    q[x] += q[y];
    q[y] = q[x];
  }
}
vector<int> Unionfind::outputfriends() {
  for (int i = 0; i < (int)(q.size()); i++) {
    int j = Unionfind::find(i);
    q[i] = q[j];
  }
  for (int i = 0; i < (int)(q.size()); i++) q[i]--;
  return q;
}
int main() {
  cout << "DEBUG MODE" << endl;
  ifstream in("input.txt");
  cin.rdbuf(in.rdbuf());
  int n, m, k, a, b, c, d;
  cin >> n;
  cout << (n + 1) / 2 << rt;
  return 0;
}
