#include <stdio.h>
//#define DBG
typedef unsigned long U32;
typedef unsigned __int64 U64;
int n, r, g, b, T, G;
#ifdef DBG
char str[1025] = {0}, *p=str;
char res[1025] = {0};
#endif
U64 d, md;
void Crt2 ( int ii )
{
int i;
U64 dsave = d;
d += ( G + r ) * T * ii;
#ifdef DBG
for ( i = 0; i < ii; i++ ) *p++ = '2';
#endif
i = ii;
if ( md < d )
{
md = d;
#ifdef DBG
sprintf ( res, "%s", str );
#endif
}
d = dsave;
#ifdef DBG
while ( i-- > 0 ) *p-- = 0;
#endif
}
void Crt0 ( int ii )
{
U64 dsave = d;
int i = ii;
while ( i-- > 0 )
{
#ifdef DBG
*p++ = '0';
#endif
d += G * T;
T += b;
}
Crt2 ( n );
T -= ii * b;
#ifdef DBG
while ( ii-- > 0 )*p-- = 0;
#endif
d = dsave;
}
void Crt01 ( int ii )
{
U64 dsave = d;
int i;
ii >>= 1;
i = ii;
while ( i-- > 0 )
{
#ifdef DBG
*p++ = '0';
*p++ = '1';
#endif
d += G * T;
T += b;
d += G * T;
G += g;
}
for ( i = 0; i < n; i++ )
{
n -= i;
Crt0 ( i );
n += i;
}
T -= ii * b;
G -= ii * g;
d = dsave;
#ifdef DBG
while ( ii-- > 0 )
{
*p-- = 0;
*p-- = 0;
}
#endif
}
void Crt1 ( int ii )
{
U64 dsave = d;
int i = ii;
d = 0;
G = 0;
while ( i-- > 0 )
{
#ifdef DBG
*p++ = '1';
#endif
d += T * G;
G += g;
}
for ( i = 0; i < n; i += 2 )
{
n -= i;
Crt01 ( i ); // i==2
n += i;
}
#ifdef DBG
while ( ii-- > 0 )
{
*p-- = 0;
}
#endif
d = dsave;
}
int main ( void )
{
int i;
md = 0;
#ifdef DBG
n=245;r=4;g=3;b=2;T=1;
#else
scanf ( "%d%d%d%d%d", &n, &r, &g, &b, &T );
#endif
for ( i = n - 1; i >= 0; i-- )
{
n -= i;
Crt1 ( i );
n += i;
#ifdef DBG
puts ( res );
#endif
}
#ifdef DBG
puts ( res );
printf ( "%I64u\n", md );
system ( "pause" );
#else
printf ( "%I64u\n", md );
#endif
return 0;
}