rt,不知道为什么 60pts
#include<bits/stdc++.h>
#define int long long
#define maxn 100005
#define lc rt<<1
#define rc rt<<1|1
#define fq(i,a,b) for(int i=a;i<=b;i++)
#define fp(i,a,b) for(int i=a;i<b;i++)
#define frq(i,a,b) for(int i=a;i>=b;i--)
#define frp(i,a,b) for(int i=a;i>b;i--)
using namespace std;
int h,x,y,z;
priority_queue<pair<int,int>> C;
int dp[maxn];
int vis[maxn];
signed main(){
ios::sync_with_stdio(false);cin.tie(0);
cin>>h>>x>>y>>z;
memset(dp,0x7f,sizeof(dp));dp[0]=1; C.push(make_pair(dp[0],0));
while(!C.empty()) {
auto now=C.top(); C.pop();
if(vis[now.second]) continue; vis[now.second]=1;
int to=(now.second+y)%x;
if(dp[to]>dp[now.second]+y) dp[to]=dp[now.second]+y,C.push(make_pair(dp[to],to));
to=(now.second+z)%x;
if(dp[to]>dp[now.second]+z) dp[to]=dp[now.second]+z,C.push(make_pair(dp[to],to));
}
int ans=0;
fp(i,0,x) {
if(dp[i]>h) continue;
else ans+=(h-dp[i])/x+1;
}
cout<<ans;
return 0;
}