func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast )   #pragma GCC optimize( unroll-loops )   #pragma GCC target( sse2 )   using namespace std;   template <typename Arg1>   void __f(const char* name, Arg1&& arg1) {     std::cerr << name <<   :   << arg1 <<   n ;   }   template <typename Arg1, typename... Args>   void __f(const char* names, Arg1&& arg1, Args&&... args) {     const char* comma = strchr(names + 1,  , );     std::cerr.write(names, comma - names) <<   :   << arg1 <<   |  ;     __f(comma + 1, args...);   }   long long max(long long a, long long b) { return (a > b) ? a : b; }   long long min(long long a, long long b) { return (a < b) ? a : b; }   void amax(long long& a, long long b) { a = max(a, b) % 1000000007; }   void amin(long long& a, long long b) { a = min(a, b) % 1000000007; }   void inc(long long& a, long long b) { a = (a + b) % 1000000007; }   void dec(long long& a, long long b) { a = (a - b + 1000000007) % 1000000007; }   long long n, a, b;   long long ans = 1e9;   void find(long long la, long long lb, long long level = 0) {     if (la == 0 && lb == 0) {       amin(ans, level);       return;     }     for (long long i = 0; i <= la; i++) {       long long n2 = n - i * a;       if (n2 < 0) break;       long long usedb = min(n2 / b, lb);       n2 -= usedb * b;       long long ii = i;       ii += n2 / a;       long long temp = n2 / a;       n2 -= temp * a;       ii = min(la, ii);       if (usedb == 0 && ii == 0) continue;       find(la - ii, lb - usedb, level + 1);     }   }   long long solve() {     cin >> n >> a >> b;     find(4, 2);     cout << ans;     return 0;   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long t = 1;     while (t--) {       solve();     }   }   