#include <bits/stdc++.h>
using namespace std;
namespace AC {
const long long MAXN = 1e5 + 10;
const long long MAXM = 1e5 + 10;
long long d1, d2, d3;
inline long long Read() {
  long long X = 0;
  bool flag = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') flag = 0;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    X = (X << 1) + (X << 3) + ch - '0';
    ch = getchar();
  }
  if (flag) return X;
  return (~(X - 1));
}
inline void Read(long long arr[], long long s, long long e) {
  for (long long i = s; i <= e; ++i) arr[i] = Read();
}
inline void Write(long long X) {
  if (X < 0) {
    X = ~(X - 1);
    putchar('-');
  }
  if (X > 9) Write(X / 10);
  putchar(X % 10 + '0');
}
inline void Print(long long X) { Write(X), puts(""); }
inline void Print(long long arr[], long long s, long long e) {
  for (long long i = s; i <= e; ++i)
    if (i < e)
      Write(arr[i]), printf(" ");
    else
      Print(arr[i]);
}
}  // namespace AC
using namespace AC;
int main() {
  while (~scanf("%lld", &d1)) {
    d2 = Read(), d3 = Read();
    long long ans = d1 + d2 + d3;
    ans = min(2 * (d1 + d3), ans);
    ans = min(2 * (d1 + d2), ans);
    ans = min(2 * (d2 + d3), ans);
    Print(ans);
  }
  return 0;
}
