#include <bits/stdc++.h>
//#define int long long
#define ll long long
#define ull unsigned long long
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define max_ele(v) *max_element(v.begin(), v.end())
#define min_ele(v) *min_element(v.begin(), v.end())
#define SORT(v) sort(v.begin(), v.end())
#define REVERSE(v) reverse(v.begin(), v.end())
#define REV_SORT(v) sort((v).begin(), (v).end(), greater<>())
#define all(v) v.begin(), v.end()
#define vint vector<int>
#define u_set unordered_set
#define u_map unordered_map
#define setbit(x) __builtin_popcount(x)
#define lead_zero(x) __builtin_clz(x)
#define trail_zero(x) __builtin_ctz(x)
#define coutall(v) for(auto &&it : v) cout << it <<" "
#define coutnl(v) for(auto &&it : v) cout << it <<'\n'
#define cinall(v) for(auto &&it : v) cin >> it
#define cin2d(v) for(auto &&row : v) for(auto &&element : row) cin >> element;
#define cout2d(v) for (const auto& row : v) { for (const auto& element : row) cout << element << ' '; cout << '\n';}
#define nl cout << '\n';
using namespace std;
int cerrr = 1;
#define err cerr << "Thats GFG! " << cerrr++ << '\n'
const ll Inf = 0x3fffffffffffffff;
const int mod = 0x3b9aca07;
void debug_mode(){
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
freopen("error.txt", "w", stderr);
#endif
}
void solve();
int32_t main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr);
//debug_mode();
int TestCase = 1;
// cin >> TestCase;
int case_no = 1;
while (TestCase--){
// cout << "Case " << case_no++ << ": ";
solve();
// cout << '\n';
}
return 0;
}
void solve(){
int n; cin >> n;
if(n == 2) cout << 1 << '\n';
else if(n % 3 == 0) cout << n / 3 << '\n';
else if(n % 3 == 2) cout << (n / 3) + 1 << '\n';\
else{
n -= 4;
cout << n / 3 + 2 << '\n';
}
}