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.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;

public class B {
	static BufferedReader stdin = new BufferedReader(new
			InputStreamReader(System.in));
	static StringTokenizer st = new StringTokenizer("");
	public static void main(String[] args) throws Exception {
		int[] v = new int[]{readInt(), readInt(), readInt()};
		int[] rem = new int[3];
		int[] bouquets = new int[3];
		for (int i = 0; i < 3; i++){
			bouquets[i] = v[i]/3;
			rem[i] = v[i]%3;
		}
		int best = 0;
		for (int b : bouquets)
			best += b;
		best += Math.min(rem[0], Math.min(rem[1], rem[2]));
		for (int i = 0; i < 3; i++) {
			if (bouquets[i] != 0) {
				rem[i] += 3;
				bouquets[i]--;
				int res = 0;
				for (int b : bouquets)
					res += b;
				res += Math.min(rem[0], Math.min(rem[1], rem[2]));
				best = Math.max(best, res);
				rem[i] -= 3;
				bouquets[i]++;
			}
		}
		System.out.println(best);
	}
	
	static String readString() throws Exception {
		while (!st.hasMoreTokens()) {
			st = new StringTokenizer(stdin.readLine());
		}
		return st.nextToken();
	}
	
	static int readInt() throws Exception {
		return Integer.parseInt(readString());
	}
	
	static long readLong() throws Exception {
		return Long.parseLong(readString());
	}
	
	static double readDouble() throws Exception {
		return Double.parseDouble(readString());
	}
}