/*jai_ganeshdeva*/

#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define pu push  //  adds the value to the last of the queue 
#define lld long long int
#define ldo long double
#define ins insert /// used in set to insert the values 
#define adv advance  /// used to increment the iterator
#define mp make_pair
#define fi first
#define se second
#define all(c) c.begin(),c.end()
#define PI 3.1415926
#define INF (lld)1e16
#define vl  vector<long long int >
#define vpll vector< pair<lld ,lld> >
#define vvl vector<vector<lld> > 
#define pll pair <lld,lld>
lld p1=1e9 + 7,p2=998244353;

void judge(){
    #ifndef ONLINE_JUDGE
    // for getting input from input.
    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    // freopen("output.txt", "w", stdout);
    #endif
}

void fastio(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}



long long int modp(lld a,lld p,lld n)
{
    // n=n%(p-1);
    if(n==0) return 1;
    if(n==1) return a%p;
    lld x=modp(a,p,n/2);
    x*=x;
    x%=p;
    return (n%2?(x*a)%p:x);
}

lld modInverse(lld n, lld p) 
{ 
    return modp(n, p, p-2); 
}

// lld fac[500005]; 

// void getfac(lld p)
// {
//     fac[0] = 1; 
//     for (lld i=1 ; i<=500005; i++) 
//         fac[i] = fac[i-1]*i%p; 
// }    

// long long int nCrmodp(lld n, lld r,lld p) 
// { 
//    // Base case 
//    if (r==0) 
//       return 1; 
     
//     return (fac[n]* modInverse(fac[r], p) % p * 
//             modInverse(fac[n-r], p) % p) % p; 
// }


struct segtree{
    lld n,n2;
    vector<lld> v;

    void init(lld x)
    {
        lld a=1;
        while(a<=x) a*=2;
        n2=2*a;
        n=x;
        v.assign(n2,0);   
    }

    void build(vector<lld> &w,lld curr,lld l,lld r)
    {
        if(l==r)
        {
            if(l<n)
            {
                v[curr]=w[l];
            }
            return;
        }
        lld mid=l+(r-l)/2;
        build(w,2*curr+1,l,mid);
        build(w,2*curr+2,mid+1,r);
        v[curr]=v[2*curr+1]+v[2*curr+2];
    }

    void build(vector<lld>&w)
    {
        build(w,0,0,n-1);
    }

    void update(lld l, lld r,lld pos,lld curr)
    {
        if(l==r)
        {
            v[curr]-=1;
            return;
        }
        lld mid=l+(r-l)/2;
        if(pos<=mid)
        {
            update(l,mid,pos,2*curr+1);
        }
        else update(mid+1,r,pos,2*curr+2);
        v[curr]=v[2*curr+1]+v[2*curr+2];
    }

    void update(lld pos)
    {
        update(0,n-1,pos,0);
    }

    pll getVal(lld l,lld r,lld curr,lld k)
    {
        if(l==r)
        {    
            return {l,k};   
        }
        lld mid=l+(r-l)/2;
        if(v[2*curr+1]>=k)
        {
            return getVal(l,mid,2*curr+1,k);
        }
        return getVal(mid+1,r,2*curr+2,k-v[2*curr+1]);
    }


    pll getVal(lld k)
    {
        return getVal(0,n-1,0,k);
    }
};

lld l,r,mid,ans=0;
lld n,i,j,k,g,m;
lld x,y,n1,n2,h,z,c;


bool compare(pair<pll,lld> p1,pair<pll,lld> p2)
{
    if(p1.fi.fi!=p2.fi.fi) return p1.fi.fi<p2.fi.fi;
    return p1.fi.se>p2.fi.se;
}

void solve(){
    cin>>x>>y>>z;
    if(x==y)
    {
        cout<<z;
    }
    else if(y==z)
    {
        cout<<x;
    }
    else if(x==z) cout<<y;
    else cout<<"0";
}


int main()
{
    // judge();
    fastio();
    lld t=1;
    // lld n;
    // cin>>t;
    // cout<<t<<" \n";
    // lld p1 = 1e9 + 7;
    // getfac(p1);
    for(int i=0;i<t;i++)
    {
        // cout<<"Case #"<<i+1<<": ";
        // cout<<" ----------------\n";
        solve();
        cout<<" \n";
    }
    // cerr << "Time : " << ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
    // exit(0);

    return 0;
}

#include <iostream>
#include <vector>
#include <set>

using namespace std;

int main(void) {
    int a, b, c;
    cin >> a >> b >> c;
    if (a == b) {
        cout << c << endl;
    }
    else if (b == c) {
        cout << a << endl;
    }
    else if (a == c) {
        cout << b << endl;
    }
    else {
        cout << 0 << endl;
    }
    return 0;
}