// https://sio2.mimuw.edu.pl/c/oi33-1/p/
#include <bits/stdc++.h>
// #define GARY_DBG
#define GARY_LIB
constexpr int sizik = 3 * 1001;
#define ar std::array
typedef std::vector<std::vector<int>> _kra;
#define int int64_t
int dp[sizik];
void get_divisors(std::vector<int>& d, int x) {
int i = 1;
while (i * i <= x) {
if (x % i == 0) {
d.push_back(i);
}
i++;
}
}
void solve() {
int n, a, b, c;
std::cin >> n >> a >> b >> c;
dp[1] = a;
for (int i = 2; i <= n; i++) {
dp[i] = INT64_MAX;
for (int j = 1; j < i; j++) {
int k = i - j;
if (k < j) continue;
dp[i] = std::min(dp[i], dp[j] + dp[k] + b);
}
std::vector<int> d;
get_divisors(d, i);
for (const auto& x : d) {
int y = i / x;
dp[i] = std::min(dp[i], dp[x] + dp[y] + c);
}
}
for (int i = 1; i <= n; i++) {
std::cout << dp[i] << " ";
}
std::cout << '\n';
}
int32_t main() {
#ifndef GARY_DBG
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
#endif
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}