Problem:
Score : 100 points

Problem Statement

There are two buttons, one of size A and one of size B.

When you press a button of size X, you get X coins and the size of that button decreases by 1.

You will press a button twice. Here, you can press the same button twice, or press both buttons once.

At most how many coins can you get?

Constraints

All values in input are integers.

3 \leq A, B \leq 20

Input

Input is given from Standard Input in the following format:

A B

Output

Print the maximum number of coins you can get.

Sample Input 1

5 3

Sample Output 1

9

You can get 5 + 4 = 9 coins by pressing the button of size 5 twice, and this is the maximum result.

Sample Input 2

3 4

Sample Output 2

7

Sample Input 3

6 6

Sample Output 3

12

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#define _CRT_SECURE_NO_WARNINGS
#include "bits/stdc++.h"
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
#define FOR(i, m, n) for(int i=(m); i<(n); ++i)
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(),(x).end()
#define mp make_pair
#define pb push_back
#define Cout(x) cout << (x) << endl
#define dump(x) cerr << #x << " = " << (x) << endl;

typedef long long LL;
typedef vector<int> VI;
typedef vector<long long> VL;
typedef vector<string> VS;
typedef vector<vector<int>> VVI;
typedef pair<int, int> PII;
const int inf = (int)1e9;
const long long mod = (long long)1e9 + 7;
const double pi = acos(-1.0);

#define Sort(a) sort(a.begin(),a.end())
#define ReSort(a) sort(a.rbegin(),a.rend())
#define Reverse(a) reverse(a.begin(),a.end())
#define Sum(a) accumulate(a.begin(),a.end(),0)
#define SumLL(a) accumulate(a.begin(),a.end(),0LL)

//INPUT//
void CINPUT() {}
template<class H, class ...T> void CINPUT(H&& h, T&& ...t) { cin >> h; CINPUT(forward<T>(t)...); }
#define in(...) int __VA_ARGS__; CINPUT(__VA_ARGS__);
#define In(T,...) T __VA_ARGS__; CINPUT(VA_ARGS__);
#define Vin(T,name,n) int n; cin>>n; vector<T> name(n); rep(i,n)cin>>name[i];
#define VIn(T,name,n) vector<T> name(n); rep(i,n)cin>>name[i];

//OUTPUT//
void print() { cout << endl; }
template <class H> void print(H&& h) { cout << h << endl; }
template <class H, class... T> void print(H&& h, T&& ... t) { cout << h << " "; print(forward<T>(t)...); }
#define yes(flag) puts((flag) ? "yes" : "no");
#define Yes(flag) puts((flag) ? "Yes" : "No");
#define YES(flag) puts((flag) ? "YES" : "NO");
#define Yay(flag) puts((flag) ? "Yay!" : ":(");
#define poss(flag) puts((flag) ? "possible" : "impossible");
#define Poss(flag) puts((flag) ? "Possible" : "Impossible");
#define POSS(flag) puts((flag) ? "POSSIBLE" : "IMPOSSIBLE");
#define out(n) cout << (n) << endl;
#define Vout(a) rep(i, sz(a))cout << a[i] << (i==sz(a)-1?"\n":" ");

int main() {
	in(a, b);
	out(a == b ? a * 2 : max(a, b) * 2 - 1);
}