#include using namespace std; #define rep(i,n) for(long long i = 0; i < (n); i++) #define REP(i,s,n) for(long long i = (s); i <= (n); i++) #define repr(i,n) for(long long i = (n - 1); i >= 0; i--) #define REPR(i,s,n) for(long long i = (s); i >= (n); i--) #define all(a) (a).begin(), (a).end() #define rall(a) (a).rbegin(), (a).rend() #define sumvec(v) accumulate(all(v), 0LL) #define DOUBLE fixed << setprecision(15) #define OK cerr << "OK\n" #define OK1 cerr << "OK1\n" #define OK2 cerr << "OK2\n" #define sz(s) (long long)s.size() #define zero(x, n) setw(x) << setfill('0') << n #define dbg(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ") " << __FILE__ << endl; typedef long long ll; typedef long double ld; typedef vector vi; typedef vector vll; typedef vector vd; typedef vector vc; typedef vector vb; typedef vector vs; typedef vector vvi; typedef vector vvll; typedef vector vvd; typedef vector vvc; typedef vector vvb; typedef pair P; typedef vector

vP; void debug() { cerr << "\n"; } template void debug(const T &x, const Args &... args) { cerr << x << " "; debug(args...); } template ostream& operator<< (ostream& ost, const pair &p) { ost << "{" << p.first << ", " << p.second << "} "; return ost; } template ostream& operator<< (ostream& ost, const vector&v) { ost << "{"; for (int i = 0; i < (int)v.size(); i++) { if(i) ost << " "; ost << v[i]; } ost << "} \n"; return ost; } template ostream& operator<<(ostream& os, const deque &vec) { os << "deq["; for (auto v : vec) os << v << ","; os << "]\n"; return os; } template ostream& operator<< (ostream& ost, const map&v) { ost << "{"; for (auto p : v) { ost << "{" << p.first << ", " << p.second << "} "; } ost << "}\n"; return ost; } template istream& operator>> (istream& is, vector& vec) { for(T& e : vec) is >> e; return is; } template istream& operator>> (istream& is, pair& p) { is >> p.first >> p.second; return is; } template string join(vector& vec, string sep=" ") { stringstream ss; for(int i = 0; i < (int)vec.size(); i++) { ss << vec[i] << (i + 1 == (int)vec.size() ? "\n" : sep); } return ss.str(); } template pair operator+ (const pair &l, const pair &r) { return make_pair(l.first + r.first, l.second + r.second); } template pair operator- (const pair &l, const pair &r) { return make_pair(l.first - r.first, l.second - r.second); } template ostream& operator<< (ostream &os, const set &vec) { os << "{"; for (auto v : vec) os << v << ","; os << "}\n"; return os; } template ostream& operator<<(ostream &os, const multiset &vec) { os << "{"; for (auto v : vec) os << v << ","; os << "}\n"; return os; } template auto min(const T& a){ return *min_element(a.begin(), a.end()); } template auto max(const T& a){ return *max_element(a.begin(), a.end()); } template inline bool chmax(T& a, T b){ if(a < b){ a = b; return true; } return false; } template inline bool chmin(T& a, T b){ if(a > b){ a = b; return true; } return false; } #define INT(...) int __VA_ARGS__; IN(__VA_ARGS__) #define LL(...) long long __VA_ARGS__; IN(__VA_ARGS__) #define CHR(...) char __VA_ARGS__; IN(__VA_ARGS__) #define DBL(...) double __VA_ARGS__; IN(__VA_ARGS__) #define STR(...) string __VA_ARGS__; IN(__VA_ARGS__) #define LD(...) long double __VA_ARGS__; IN(__VA_ARGS__) void scan(int& a){ cin >> a; } void scan(long long& a){ cin >> a; } void scan(char& a){ cin >> a; } void scan(double& a){ cin >> a; } void scan(string& a){ cin >> a; } void scan(long double& a){ cin >> a; } void IN(){} template void IN(Head& head, Tail&... tail){ scan(head); IN(tail...); } void YES(bool b) { cout << ((b) ? "YES\n" : "NO\n"); } void Yes(bool b) { cout << ((b) ? "Yes\n" : "No\n"); } void yes(bool b) { cout << ((b) ? "yes\n" : "no\n"); } void Yay(bool b) { cout << ((b) ? "Yay!\n" : ":(\n"); } void possible(bool b) { cout << ((b) ? "possible\n" : "impossible\n"); } void Possible(bool b) { cout << ((b) ? "Possible\n" : "Impossible\n"); } void POSSIBLE(bool b) { cout << ((b) ? "POSSIBLE\n" : "IMPOSSIBLE\n"); } const int dy[] = {-1, 0, 0, 1}; const int dx[] = {0, -1, 1, 0}; const int dy8[] = {-1, -1, -1, 0, 0, 1, 1, 1}; const int dx8[] = {-1, 0, 1, -1, 1, -1, 0, 1}; const int inf = 1001001001; const long long INF = ((1LL << 62) - (1LL << 31)); const long double pi = acos(-1.0); const long long mod = 1000000007; const long long MOD = 998244353; ll powmod(ll a, ll b){ ll c = 1; while(b > 0){ if(b & 1){ c = a * c % mod; } a = a * a % mod; b >>= 1; } return c; } ll nCrmod(ll n, ll r){ ll x = 1, y = 1; for(ll i = 0; i < r; i++) { x = x * (n - i) % mod; y = y * (i + 1) % mod; } return x * powmod(y, mod - 2) % mod; } ll gcd(ll a, ll b){ while(b){ ll c = b; b = a % b; a = c; } return a; } ll lcm(ll a, ll b){ if(!a || !b) return 0; return a * b / gcd(a, b); } vll divisor(ll x){ vll v; for(ll i = 1; i * i <= x; i++) if(x % i == 0){ v.push_back(i); if(i * i != x) v.push_back(x / i); } sort(v.begin(), v.end()); return v; }; map prime_factor(ll n){ map m; for(ll i = 2; i * i <= n; i++){ while(n % i == 0){ m[i]++; n /= i; } } if(n != 1) m[n] = 1; return m; } int main() { LL(n); ll ans = 0; for(ll t = 0; t < 21; t++) { for(ll g = 0; g <= t; g++) { for(ll pg = 0; pg < 34; pg++) { if(t * 5 + g * 2 + pg * 3 == n) ans++; } } } cout << ans << endl; return 0; }