Fox Ciel has some flowers: r red flowers, g green flowers and b blue flowers. She wants to use these flowers to make several bouquets. There are 4 types of bouquets:

  * To make a "red bouquet", it needs 3 red flowers. 
  * To make a "green bouquet", it needs 3 green flowers. 
  * To make a "blue bouquet", it needs 3 blue flowers. 
  * To make a "mixing bouquet", it needs 1 red, 1 green and 1 blue flower. 



Help Fox Ciel to find the maximal number of bouquets she can make.

Input

The first line contains three integers r, g and b (0 ≤ r, g, b ≤ 109) — the number of red, green and blue flowers.

Output

Print the maximal number of bouquets Fox Ciel can make.

Examples

Input

3 6 9


Output

6


Input

4 4 4


Output

4


Input

0 0 0


Output

0

Note

In test case 1, we can make 1 red bouquet, 2 green bouquets and 3 blue bouquets.

In test case 2, we can make 1 red, 1 green, 1 blue and 1 mixing bouquet.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.util.TreeSet;


public class Main {

	/**
	 * @param args
	 */
	 BufferedReader in;
	    PrintWriter out = new PrintWriter(System.out);
	    StringTokenizer tok;
	   
	     String readToken() throws IOException { // reads the token; to read a full line use in.readLine()
	    while (tok == null || !tok.hasMoreTokens()) {
	    tok = new StringTokenizer(in.readLine());
	    	
	    }
	    return tok.nextToken(); // sometimes it's better to use nextToken(String) method here
	    }
	     int readInt() throws IOException { // write readDouble(), readLong(), readBigInteger() methods if necessary
	    return Integer.parseInt(readToken());
	    }
	     public String readLine() throws IOException{
			return in.readLine();
	    	 
	     }
	     long readLong() throws IOException { // write readDouble(), readLong(), readBigInteger() methods if necessary
	    	    return Long.parseLong(readToken());
	    	    }
	     double readDouble() throws IOException { // write readDouble(), readLong(), readBigInteger() methods if necessary
	    	    return Double.parseDouble(readToken());
	    	    }
	    public static void main(String[] args) throws IOException
	    {
	       new Main().run();
	    }
	    void run() throws IOException
	    {
	    	boolean oj = System.getProperty("ONLINE_JUDGE") != null;
	    	out = new PrintWriter(new OutputStreamWriter(System.out));
	    	in = new BufferedReader(new InputStreamReader(System.in));
	    	if (oj){
	    
	    	}
	    	else{
	    		
	    		
	    	}
	       solve();
	       out.flush();
	       tok=null;
	    }
	  
	    
	    void solve() throws IOException{
	    	/*
	    	 * briskw posa mixing buquets borw na kanw
	    	 * kai stin sinexeia, aplws kanw osa alla apo ta ipoloipa borw
	    	 * --
	    	 *des editorial :'(
	    	 * 
	    	 */
	    	int r=readInt();
	    	int g=readInt();
	    	int b=readInt();
	    	int answer=(r/3) + ((g/3)+ (b/3));
	    	if (r>=1 && g>=1 && b>=1){
	    		answer=Math.max(answer,1+(r-1)/3+(g-1)/3+(b-1)/3);
	    	}
	    	if (r>=2 && g>=2 && b>=2){
	    		answer=Math.max(answer,2+(r-2)/3+(g-2)/3+(b-2)/3);

	    	}
	    	out.println(answer);
	    }
	    
}