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.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws Throwable
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int[] arr = new int[3];
		int[] arr2 = new int[3];
		int[] arr3 = new int[3];
		int op1 = Integer.MAX_VALUE;
		int op2 = 0;
		for (int i = 0; i < arr.length; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
			arr2[i] = arr[i];
			arr3[i] = arr[i];
			op1 = Math.min(op1, arr[i]);
		}
		for (int i = 0; i < arr.length; i++) {
			arr[i] -= op1;
		}
		for (int i = 0; i < arr.length; i++) {
			op1 += arr[i]/3;
		}
		
		Arrays.sort(arr2);
		if(arr2[1]>3 && arr2[1]>arr2[0] && arr2[1]%3!=0)
		{
			op2 += (arr2[1]-(arr2[1]%3)) / 3;
			arr2[1] = arr2[1] % 3;
		}
		else if(arr2[1]>3 && arr2[1]%3==0)
		{
			int least = arr2[0] %3;
			least = arr2[0] - least;
			int tmp = arr2[1] - least;
			op2 += tmp/3;
			arr2[1] = least;
		}
		if(arr2[2]>3 && arr2[2]>arr2[0] && arr2[2]%3!=0)
		{
			op2 += (arr2[2]-(arr2[2]%3)) / 3;
			arr2[2] = arr2[2] % 3;		
		}
		else if(arr2[2] > 3 && arr2[2]%3==0)
		{
			int least = arr2[0] %3;
			least = arr2[0] - least;
			int tmp = arr2[2] - least;
			op2 += tmp/3;
			arr2[2] = least;
		}
		Arrays.sort(arr2);
		op2 += arr2[0];
		int op3 = 0;
		
		for (int i = 0; i < arr3.length; i++) 
		{
			int tmp = i;
			for (int j = 0; j < arr3.length; j++) {
				if(arr3[j]==0)
					tmp = -(int)1e8;
				tmp += (arr3[j]-i)/3;
			}
			op3 = Math.max(op3,tmp);
		}
		System.out.println(Math.max(op1,Math.max(op2, op3)));		
	}
}