#include <iostream>
#include <numeric>
#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>
#include <cstdlib>
#include <cmath>
#include <utility>
#include <cmath>
#include <list>
#include <iterator>

static int check7(int base, int chk)
{
    while(1){
        if((chk % base) == 7){
            return 0;
        }
        chk /=base;
        if(chk == 0){
            return 1;
        }
    }
}

static long long int diffSum(std::vector<long long int>& vec)
{
    long long int sum = std::accumulate(vec.begin(), vec.end(), 0LL);
    long long int ret = 0;
    long long int size = vec.size();

    /*
    for(int i = 0 ; i < size; i++){
        ret += vec[i]*i - sum;
        sum += vec[i];
    }
    */

    for(auto itr = vec.begin(); itr != vec.end(); itr++){
        sum -= (*itr);
        size--;
        ret += (*itr) * size - sum;
    }

    return ret;
}

bool IsPrimeNumber(long long n)
{
    bool ret = true;
    if( n < 2){
        return false;
    }
    for(long long i = 2; (i * i) <= n; i++){
        if((n % i) == 0){
            ret = false;
            break;
        }
    }
    return ret;
}

long long  GetPrimeNumber(long long n)
{
    long long ret = n;
    if( n < 2){
        return false;
    }
    for(long long i = 2; (i * i) <= n; i++){
        if((n % i) == 0){
            ret = i;
        }
    }
    return ret;
}
/*
long long GetMaxPrimeNumber(long long  n)
{
    long long ret = n

    for(long long  i = 2; (i * i) < n ; i++){
        if((n % i) == 0){
            ret = i;
        } 
    }
    return ret;
}

long long int leastCommonMultiple(int n1, int n2)
{
    int small_n = (n1 < n2) ? n1 : n2;
    int large_n = (n1 < n2) ? n2 : n1;
    //std::cout << "large_n : " << large_n;
    long long int ret = 1;
    int sn = small_n;
    int ln = large_n;
    for(int i = 2; (i * i) < small_n; i++){
        if(IsPrimeNumber(i) == false) continue;
        while(1){
            bool endflag = true;
            
            if((sn % i) == 0){
                sn /= i;
                endflag = false;
            }

            if((ln % i) == 0){
                ln /= i;
                endflag = false;
            }

            if(endflag){
                break;
            }else{
                ret *= i;
                large_n =  (sn < ln) ? sn : ln;
            }
        }
        
    }
    std::cout << ret << " " << ln << " " << sn << std::endl;

    int t1 = (sn < ln) ? ln : sn;
    int t2 = (sn < ln) ? sn : ln;
    
    if((t1 % t2) == 0){
        ret *= t1;
    }else{
        ret = ret*t1*t2;
    }
    return ret;
}
*/

float ClacProbability(int A, int B, int C)
{
    float ret;

    ret = A/(A + B + C);
    return ret;
}

long long  Combination(long long  n, long long  k)
{
    long long ret = 1;
    long long demoninator = 1;
    
    if( k <= 0){
        return 1;
    }

    if(n/2 < k){
        k = n -k;
    }
    
    for(int i = 0; i < k; i++){
        ret *= (n - i)%(long long)(10e9 + 7);
        demoninator *= (i + 1)%(long long)(10e9 + 7);
    }
    
    return ret/demoninator;
}

long long  CountBaseN(long long N, long long base_count[])
{
    while(1){
        base_count[((N % 10) % 3)]++;
        N /= 10;

        if(N <= 0){
            break;
        }
    }
    
    return base_count[0] + base_count[1] + base_count[2];
}

int main()
{
    std::vector<long long> T(3, 0);
    std::cin >> T[0] >> T[1] >> T[2];
    
    std::sort(T.begin(), T.end());

    std::cout << T[2] + T[1] << std::endl;
    return 0;
}
  
/*
Name: Rishad Nur;
BRUR, CSE,
mail: rishad.nur007@gmail.com;
*/

#include<bits/stdc++.h>
using namespace std;



int main()
{
    #ifndef ONLINE_JUDGE
    	freopen("input.txt", "r", stdin);
    	freopen("output.txt", "w", stdout);
    #endif
    long long int n,m,i,j,k,l,x=0,y,a,sum=0,b;
    
   cin>>n>>m>>l;
   sum=n+m+l;
   x=min(n,min(m,l));
   cout<<sum-x<<endl;

    return 0;
}