#include <bits/stdc++.h>
const int MAXN = 1;
const int g[3][2] = {{1, 2}, {0, 2}, {0, 1}};
int n;
int a, b, c;
int get(int x, int y) {
  if ((x == 0 && y == 1) || (x == 1 && y == 0))
    return a;
  else if ((x == 0 && y == 2) || (x == 2 && y == 0))
    return b;
  else
    return c;
}
int main() {
  scanf("%d", &n);
  scanf("%d%d%d", &a, &b, &c);
  int curPos = 0;
  int res = 0;
  for (int i = 1; i < n; ++i) {
    if (get(curPos, g[curPos][0]) < get(curPos, g[curPos][1])) {
      res += get(curPos, g[curPos][0]);
      curPos = g[curPos][0];
    } else {
      res += get(curPos, g[curPos][1]);
      curPos = g[curPos][1];
    }
  }
  printf("%d\n", res);
  return 0;
}
