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.*;
import java.lang.*;
import java.util.*;

public class code
{
	static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        long nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
	public static void main(String args[])throws IOException
	{
		FastReader scn = new FastReader();

		long r = scn.nextLong();
		long g = scn.nextLong();
		long b = scn.nextLong();

		//cases 1 3 3 &  3 2 2 & 6 2 2
		if(r==0 && g==0 && b==0)
		{
			System.out.println(0);
			return;
		}

		if((r==0 && g==0) || (r==0 && b==0) && (g==0 && b==0))
		{

			System.out.println((r+b+g)/3);
			return;
		}

		if(r==0 || g==0 || b==0)
		{
			System.out.println(r/3 + b/3 + g/3);
			return;
		}

		long count = 0;
		count += (r%3==0)?((r/3) - 1) : r/3;
		count += (b%3==0)?((b/3) - 1) : b/3;
		count += (g%3==0)?((g/3) - 1) : g/3;

		r = (r%3==0)?3:r%3;
		g = (g%3==0)?3:g%3;
		b = (b%3==0)?3:b%3;

		if(Math.min(r, Math.min(g, b))==2)
		{
			count = count + 2;
		}
		else if(Math.min(r, Math.min(g, b))==1)
		{
			if(Math.max(r, Math.max(g, b))< 3)
			{
				count = count + 1;
			}
			else
			{
				count += (r/3) + (b/3) + (g/3);
			}
		}
		else
		{
			count = count + 3;
		}
		System.out.println(count);
	}
}


class Node
{
	long x, y;
	boolean visited;
	ArrayList<Node> neighbors;
	public Node()
	{
		neighbors = new ArrayList<Node>();
	}
}

