#include <bits/stdc++.h>
using namespace std;
template <class T>
bool checkMin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool checkMax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
long long can(long long x) { return ((x * (x + 1) / 2) * 3) - x; }
long long n;
int doi(long long x) {
  int op = 0;
  for (long long f = 1; can(f) <= n; f++)
    if ((n + f) % 3 == 0) op++;
  return op;
}
int main() {
  cin >> n;
  cout << doi(n) << endl;
  return 0;
}
