from heapq import heappush, heappop import sys input = sys.stdin.readline def dijkstra(G, s): INF = 10**18 dist = [INF] * len(G) dist[s] = 0 pq = [(0, s)] while pq: d, v = heappop(pq) if d > dist[v]: continue for u, weight in G[v]: nd = d + weight if dist[u] > nd: dist[u] = nd heappush(pq, (nd, u)) return dist N, A, B, C = map(int, input().split()) dist = [10**18] * (2*N) G = [[] for _ in range(2*N)] for i in range(N): G[i].append((2*i%N, C)) G[N+i].append((2*i%N, C)) G[i].append((N+(i+1)%N, A+B)) G[N+i].append((N+(i+1)%N, A)) dist = dijkstra(G, N+1) ans = [10**18] * N for i in range(N): ans[i] = min(dist[i], dist[N+i]) + A+B print(*ans, sep="\n")