#include<bits/stdc++.h>
#define int long long
using namespace std;
int h,x,y,z,d[200009],ans;
bool vis[200009];
struct node
{
int v,w;
};
vector<node>e[200009];
void sb()
{
memset(d,0x3f3f3f3f,sizeof(d));
priority_queue<pair<int,int> >q;
q.push({0,0});
d[0]=0;
while(q.size())
{
int u=q.top().second;
q.pop();
if(vis[u])continue;
vis[u]=1;
for(int i=0;i<e[u].size();i++)
{
int v=e[u][i].v,w=e[u][i].w;
if(d[u]+w<d[v])d[v]=d[u]+w,q.push({d[v],v});
}
}
}
signed main()
{
cin>>h>>x>>y>>z;
h--;
if(x>y)swap(x,y);
if(y>z)swap(y,z);
if(x>y)swap(x,y);
if(x==1)
{
cout<<h+1;
return 0;
}
for(int i=0;i<x;i++)
{
e[i].push_back({(i+y)%x,y});
e[i].push_back({(i+z)%x,z});
}
sb();
for(int i=0;i<x;i++)if(d[i]<=h)ans+=(h-d[i])/x+1;
cout<<ans;
return 0;
}