#include <algorithm>
#include <iostream>
#include <map>
#include <set>
#include <string>
#include <vector>
using namespace std;
typedef long long ll;

int main() {
    vector<int> vec(3);
    for (int i = 0; i < 3; i++) {
        cin >> vec[i];
    }
    sort(vec.begin(), vec.end(), greater<int>());

    cout << vec[0]+vec[1] << endl;
}
///////////////////////Loading Payloads.......////////////////////////////
#include<bits/stdc++.h>
#define f(i,a,b) for(int i = a; i < b; i++)
#define fd(i,a,b) for(int i = a; i > b;i--)
#define fld(i,a,b) for(ll i = a ; i > b;i--)
#define ll long long
#define fl(i,a,b) for(ll i = a; i < b; i++)
#define VI vector<int>
#define VP vector<pair<int,int>>
#define VPL vector<pair<ll,ll>>
#define VS vector<string>
#define VL vector<long long>
#define VC vector<char>
#define VF vector<float>
#define VD vector<double>
#define VB vector<bool>
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define fa(i,skill) for(auto i : skill)
#define fr(i,skill) for(VI :: reverse_iterator i = skill.rbegin(); i != skill.rend(); i++)
#define PI pair<int,int>
#define mi map<int,int>
#define ml map<ll,ll>
#define mci map<char,int>
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define MAX 1000000007
#define INF 10000000000000007
#define debug(x) cout<<"This side    ----> "<<#x<<" -> "<<x<<endl
#define printvec(x) fa(a,x)cout << a << " ";cout << "\n";
using namespace std;

///////////////////////Engine Check.......////////////////////////////
void edit(VI &skill,int n)
{
    f(i,0,n)
    {
        int x;
        cin >> x;
        skill.PB(x);
    }
}


bool cmp(pair<ll,ll>p1,pair<ll,ll>p2)
{
    if(p1.S > p2.S)
        return true;
    if(p1.S < p2.S)
        return false;
    if(p1.F > p2.F)
        return true;
    else
        return false;
}
void editl(VL &skill,ll n)
{
    fl(i,0,n)
    {
        ll x;
        cin >> x;
        skill.PB(x);
    }
}
void editpl(VPL &skill,ll n)
{
    fl(i,0,n)
    {
        ll x,y;
        cin >> x >> y;
        skill.PB({x,y});
    }
}
ll nextPowerOf2(ll n) 
{
    n--;
    n |= n >> 1;
    n |= n >> 2;
    n |= n >> 4;
    n |= n >> 8;
    n |= n >> 16;
    n++;
    return n;
}

long long gcd(long long  a, long long  b)
{
  if (b == 0)
    return a;
  return gcd(b, a % b);
}

const ll N = 0;

VL graph[N];

VB vis(N,0);
set<ll> st;

void dfs(ll node)
{
    if(vis[node]) return;

    vis[node] = true;
    st.insert(node);
    
    
    // debug(c);
    fa(a,graph[node])
        {
            dfs(a);
        }
    
}




bool isGoogles = 0;
bool testcase = 0;
void achilles() 
{
    VL arr;editl(arr,3);
    sort(rall(arr));

    cout << arr[0] + arr[1] << "\n";
}   



///////////////////////3....2....1...Ignition////////////////////////////

int main()
{

    ios :: sync_with_stdio(0);
    cin.tie(0);
    // freopen("input.txt","r",stdin);
    // freopen("output.txt","w",stdout);
    // seive(N);
    ll t=1,w=1;
    if(testcase)
        cin >>t;
    // t = 2e4;
    while(t--)
        {   
    achilles();
    w++;
}
return 0;  
}