You are at a water bowling training. There are l people who play with their left hand, r people, who play with their right hand, and a ambidexters, who can play with left or right hand.

The coach decided to form a team of even number of players, exactly half of the players should play with their right hand, and exactly half of the players should play with their left hand. One player should use only on of his hands.

Ambidexters play as well with their right hand as with their left hand. In the team, an ambidexter can play with their left hand, or with their right hand.

Please find the maximum possible size of the team, where equal number of players use their left and right hands, respectively.

Input

The only line contains three integers l, r and a (0 ≤ l, r, a ≤ 100) — the number of left-handers, the number of right-handers and the number of ambidexters at the training. 

Output

Print a single even integer — the maximum number of players in the team. It is possible that the team can only have zero number of players.

Examples

Input

1 4 2


Output

6


Input

5 5 5


Output

14


Input

0 2 0


Output

0

Note

In the first example you can form a team of 6 players. You should take the only left-hander and two ambidexters to play with left hand, and three right-handers to play with right hand. The only person left can't be taken into the team.

In the second example you can form a team of 14 people. You have to take all five left-handers, all five right-handers, two ambidexters to play with left hand and two ambidexters to play with right hand.
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.lang.*;
import static java.lang.System.*;
import static java.lang.Math.*;
/*created by aditya76*/
public class adi{
        static int maxx=Integer.MAX_VALUE;
        static int minn=Integer.MIN_VALUE;
        static int XXX=1000000007;
        public static void main(String[] args) throws IOException {
        InputReader sc=new InputReader(System.in);
        int l=sc.nextInt();
        int r=sc.nextInt();
        int a=sc.nextInt();
        while(a>0){
          if(l<r){
            l++;
            a--;
          }
          else if(l>r){
            r++;
            a--;
          }
          else if(l==r&&a>1){
            l++;
            r++;
            a--;
            a--;
          }
          else
            break;
        }
        out.println(min(l,r)*2);
           
  }
 
//lcs
//http://hss3uro2hsxfogfq.onion/
//n<<m = n*pow(2,m);
//n>>m = n/pow(2,m);
public static int lcs(String s1, String s2){
    char[] X=s1.toCharArray();
    char[] Y=s2.toCharArray();
    int m=X.length;
    int n=Y.length;
    int L[][] = new int[m+1][n+1];
    for (int i=0; i<=m; i++){
      for (int j=0; j<=n; j++){
        if (i == 0 || j == 0)
            L[i][j] = 0;
        else if (X[i-1] == Y[j-1])
            L[i][j] = L[i-1][j-1] + 1;
        else
            L[i][j] = unity(L[i-1][j], L[i][j-1]);
      }
    }
  return L[m][n];
  }
//unity function
  public static int unity(int a, int b){
    return (a > b)? a : b;
}
 
//longest increasing subsequence (n log n)
public static int CeilIndex(int A[],int l,int r,int key){
        while(r-l>1){
            int m=l+(r-l)/2;
            if (A[m]>=key)
                r=m;
            else
                l=m;
      }
      return r;
    }
 
 
 public static int lis(int A[]){
        int size=A.length;
        int[] tailTable   = new int[size];
        int len;
        tailTable[0] = A[0];
        len = 1;
        for (int i=1;i<size;i++){
            if (A[i]<tailTable[0])
                tailTable[0]=A[i];
            else if(A[i]>tailTable[len-1])
                tailTable[len++]=A[i];
            else
                tailTable[CeilIndex(tailTable, -1, len-1, A[i])] = A[i];
        }
        return len;
    }
 
//knapsack standard
public static int knp(int W, int wt[], int val[], int n){
      int i, w;
      int K[][] = new int[n+1][W+1];
      for (i = 0; i <= n; i++){
             for (w = 0; w <= W; w++){
                 if (i==0 || w==0)
                      K[i][w] = 0;
                 else if (wt[i-1] <= w)
                       K[i][w] = unity(val[i-1] + K[i-1][w-wt[i-1]],  K[i-1][w]);
                 else
                       K[i][w] = K[i-1][w];
             }
          }
          return K[n][W];
  }
 
//binary modular
public static long bxp(long a,long b){
        long ans=1;
        while(b>0){
          if(b%2==1)
            ans=(ans*a)%1000000007;
          a=(a*a)%1000000007;
          b>>=1;
      }
  return ans;
}
//euclid gcd
public static long gcd(long a, long b) {
  return b == 0 ? a : gcd(b, a % b);
}
 
//prime
public static boolean isprime(long number){
        if(number==1)
          return false;
        for(int i=2;i<=sqrt(number); i++){
          if(number % i == 0){
            return false;
          }
      }
        return true;
}
 
//large fibbonacci
public static int ffb(int n) {
		BigInteger a = BigInteger.ZERO;
		BigInteger b = BigInteger.ONE;
		int m = 0;
		for (int i = 31 - Integer.numberOfLeadingZeros(n); i >= 0; i--) {
			assert a.equals(sfb(m));
			assert b.equals(sfb(m+1));
			BigInteger d = multiply(a, b.shiftLeft(1).subtract(a));
			BigInteger e = multiply(a, a).add(multiply(b, b));
			a = d;
			b = e;
			m *= 2;
			assert a.equals(sfb(m));
			assert b.equals(sfb(m+1));
			if (((n >>> i) & 1) != 0) {
				BigInteger c = a.add(b);
				a = b;
				b = c;
				m++;
				assert a.equals(sfb(m));
				assert b.equals(sfb(m+1));
			}
		}
		return a.intValue();
	}
 
public static BigInteger sfb(int n) {
  		BigInteger a = BigInteger.ZERO;
  		BigInteger b = BigInteger.ONE;
  		for (int i = 0; i < n; i++) {
  			BigInteger c = a.add(b);
  			a = b;
  			b = c;
  		}
  		return a;
  	}
 
public static BigInteger multiply(BigInteger x, BigInteger y) {
    		return x.multiply(y);
  }
//reverse string
public static String rev(String s){
    StringBuilder sb=new StringBuilder(s);
	  sb.reverse();
	  return sb.toString();
}
//least common multiple
public static long lcm(long a, long b){
    return a * (b / gcd(a, b));
}
 
//depth first search
public static void dfs(ArrayList<ArrayList<Integer>> adjLists,boolean[] neha,int v){
      neha[v]=true;
    //System.out.print(v+" ");
      for(int w:adjLists.get(v)){
        if(!neha[w]){
          dfs(adjLists,neha,w);
      }
    }
}
 
//sieve prime
public static ArrayList<Integer> sieve(int n,int m){
      boolean[] isPrime = new boolean[n+1];
      ArrayList<Integer> al=new ArrayList<Integer>();
        for (int i = 2; i <= n; i++)
            isPrime[i] = true;
        for (int factor = 2; factor*factor <=n; factor++) {
            if (isPrime[factor]) {
                for (int j = factor; factor*j <= n; j++)
                    isPrime[factor*j] = false;
            }
        }
        int primes = 0;
        for (int i = m; i <= n; i++) {
            if (isPrime[i])
              al.add(i);
            }
        return al;
        }
 
//input reader
static class InputReader {
      private final InputStream stream;
      private final byte[] buf = new byte[8192];
      private int curChar, snumChars;
      public InputReader(InputStream st) {
            this.stream = st;
        }
      public int read() {
          if (snumChars == -1)
              throw new InputMismatchException();
          if (curChar >= snumChars) {
              curChar = 0;
              try {
                  snumChars = stream.read(buf);
                } catch (IOException e) {
                  throw new InputMismatchException();
              }
              if (snumChars <= 0)
                  return -1;
            }
              return buf[curChar++];
          }
      public int nextInt() {
          int c = read();
          while (isSpaceChar(c)) {
              c = read();
            }
          int sgn = 1;
            if (c == '-') {
              sgn = -1;
              c = read();
            }
          int ans = 0;
          do{
            ans *= 10;
            ans += c - '0';
            c = read();
          } while (!isSpaceChar(c));
            return ans * sgn;
          }
      public long nextLong() {
          int c = read();
          while (isSpaceChar(c)) {
              c = read();
            }
          int sgn = 1;
          if (c == '-') {
              sgn = -1;
              c = read();
            }
          long ans = 0;
          do {
            ans *= 10;
            ans += c - '0';
            c = read();
          } while (!isSpaceChar(c));
              return ans * sgn;
          }
      public int[] nextIntArray(int n) {
              int a[] = new int[n];
              for (int i = 0; i < n; i++) {
                a[i] = nextInt();
              }
              return a;
            }
 
      public String readString() {
              int c = read();
              while (isSpaceChar(c)) {
                c = read();
              }
              StringBuilder ans = new StringBuilder();
              do {
                ans.appendCodePoint(c);
                c = read();
              } while (!isSpaceChar(c));
              return ans.toString();
            }
 
      public String readLine() {
              int c = read();
              while (isSpaceChar(c))
                c = read();
              StringBuilder ans = new StringBuilder();
              do {
                ans.appendCodePoint(c);
                c = read();
              } while (!isEndOfLine(c));
              return ans.toString();
            }
 
            public boolean isSpaceChar(int c) {
              return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
            }
 
            private boolean isEndOfLine(int c) {
              return c == '\n' || c == '\r' || c == -1;
            }
      }
}
  