#include <iostream>

using namespace std;

unsigned n,a,b,c;

unsigned Result() {
	if(n == 1)return a;
	if(n == 2)return max(a,b*2);
	unsigned maxP = max(max(a/2,b/3*2),c);
	if(maxP == c) return n*c;
	if(maxP == b/3*2) {
		unsigned res = 0;
		res+=n/3*2*b;
		if(n%b == 2)res+=2*b;
		if(n%b == 1)res+=max(a,2*c);
		return res;
	}
	if(maxP == a/2) {
		unsigned res = 0;
		res+=n/2*a;
		if(n%2)res+=a;
		return res;
	}
	return -1;
}

int main() {
	cin >> n >> a >> b >> c;
	cout << Result();
	return 0;
}