#include <iostream>

#define int long long

signed main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);

  int a, b, c;
  std::cin >> a >> b >> c;

  std::cout << (a + b + c) - std::min(a, std::min(b, c)) << std::endl;

  return 0;
}


#include "bits/stdc++.h"
#include "ext/pb_ds/assoc_container.hpp"
#include "ext/pb_ds/tree_policy.hpp"

using namespace __gnu_pbds;
using namespace std;
/* Written by Nishant Mittal aka nishantwrp */
#define FAST std::ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
/* Long Long Int */
#define int long long int
#define modnum 1000000007
#define mp make_pair
#define pb push_back
#define sz(a) (int)a.size()
#define precise(a) fixed<<setprecision(a)<<
#define F first
#define S second
#define I insert
#define pii pair<int,int>
#define trav(a, x) for(auto& a : x)
#define rep(n) for(int i = 0;i<n;i++)
#define invect(data,n,commands) for(int i = 0;i<n;i++){int tmp;cin>>tmp;data.pb(tmp);commands}
#define display(x) trav(a,x) cout<<a<<" "; cout<<endl;
#define all(data) data.begin(), data.end()
#define endl '\n'
#define last(a) a[sz(a)-1]
#define INF 1000000000000000000

#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
    std::cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
    const char* comma = strchr(names + 1, ',');std::cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}

typedef tree <int, null_type, greater <int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
// order_of_key(val): returns the number of values greater than val
// find_by_order(k): returns an iterator to the kth largest element (0-based)

// NOTE: For reverse ordered set (that does same things for lower than)
// typedef tree <int, null_type, less <int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;

//primes for hashing 937,991,1013,1409,1741

//Returns index of first element not less than key and more than key respectively
#define lb(data,key) lower_bound(all(data),key) - data.begin();
#define ub(data,key) upper_bound(all(data),key) - data.begin();

// Random Number Generator
std::mt19937_64 rng(std::chrono::steady_clock::now().time_since_epoch().count());

void nishantwrp(int cas) {
    vector <int> data;
    invect(data,3,)
    sort(data.begin(),data.end());
    cout<<data[2] + data[1];
}

signed main()
{
    FAST
    int t = 1;
    // cin>>t;
    int cas = 1;
    while(cas <= t) {
        nishantwrp(cas);
        cas++;
    }
    return 0;
}