One day the Codeforces round author sat exams. He had n exams and he needed to get an integer from 2 to 5 for each exam. He will have to re-sit each failed exam, i.e. the exam that gets mark 2. 

The author would need to spend too much time and effort to make the sum of his marks strictly more than k. That could have spoilt the Codeforces round. On the other hand, if the sum of his marks is strictly less than k, the author's mum won't be pleased at all. 

The Codeforces authors are very smart and they always get the mark they choose themselves. Also, the Codeforces authors just hate re-sitting exams. 

Help the author and find the minimum number of exams he will have to re-sit if he passes the exams in the way that makes the sum of marks for all n exams equal exactly k.

Input

The single input line contains space-separated integers n and k (1 ≤ n ≤ 50, 1 ≤ k ≤ 250) — the number of exams and the required sum of marks.

It is guaranteed that there exists a way to pass n exams in the way that makes the sum of marks equal exactly k.

Output

Print the single number — the minimum number of exams that the author will get a 2 for, considering that the sum of marks for all exams must equal k.

Examples

Input

4 8


Output

4


Input

4 10


Output

2


Input

1 3


Output

0

Note

In the first sample the author has to get a 2 for all his exams.

In the second sample he should get a 3 for two exams and a 2 for two more.

In the third sample he should get a 3 for one exam.
	import java.text.DecimalFormat;
	import java.util.*;
	import java.io.*;
	import java.math.*;
	public class Main {
		public static long mod= (long) (1e9 +7);
		static InputReader s;
		static PrintWriter out;
		public static void main(String args[]) {
			new Thread(null, new Runnable() {
				public void run() {
					try{
						solve();
						out.flush();
						out.close();
					}
					catch(Exception e){
						e.printStackTrace();
					}
				}
			}, "1", 1 << 26).start();
		}
		public static void solve() throws IOException{
			s= new InputReader(System.in);
			OutputStream outputStream= System.out;
			out= new PrintWriter(outputStream);
			int n= s.nextInt();
			int k= s.nextInt();
			int div= k/n;
			if(div>2)
				out.println(0);
			else{
				int md= k%n;
				out.println(n-md);
			}
			
		}
		
		static long modulo(long x,long y,long p)	
		{
			 long res = 1;
			 x = x % p;  
			 
		    while (y > 0)
		    {
		        if (y%2==1)
		            res = (res*x) % p;
		 
		        y = y>>1;
		        x = (x*x) % p;  
		    }
		    return res;
		}
		
		static HashSet<Integer> primeFactors(int n)   // O(sqrt(n))
		{
		    // Print the number of 2s that divide n
			HashSet<Integer> arr= new HashSet<>();
		    while (n%2 == 0)
		    {
		        arr.add(2);
		        n = n/2;
		    }
		 
		    // n must be odd at this point.  So we can skip one element (Note i = i +2)
		    for (int i = 3; i <= Math.sqrt(n); i = i+2)
		    {
		        // While i divides n, print i and divide n
		        while (n%i == 0)
		        {
		            arr.add(i);
		            n = n/i;
		        }
		    }
		    // This condition is to handle the case when n is a prime number
		    // greater than 2
		    if (n > 2)
		        arr.add(n);
		    
		    return arr;
		}
	 
		public static long expo(long a, long b){
			if (b==0)
		        return 1;
		    if (b==1)
		        return a;
		    if (b==2)
		        return a*a;
	 
		    if (b%2==0){
		            return expo(expo(a,(b/2)),2);
		    }
		    else{
		        return a*expo(expo(a,(b-1)/2),2);
		    }
		}
		static class Pair implements Comparable<Pair>
		{
			int a;
			int b;
	//		int c;
			Pair(int aa, int bb)
			{
				a= aa;
				b= bb;
	//			c=cc;
			}
			
			public int compareTo(Pair o) 
			{
				int ans = Integer.compare(this.a,o.a);
				return ans;
	//			return ans==0 ? -Integer.compare(this.b, o.b):ans;
	//			if(Long.compare(this.x, o.x)!=0)
	//				return -Long.compare(this.x, o.x);
	//			else
	//				return Long.compare(this.y, o.y);
	//			return Integer.compare(this.x, o.x);
		//		return Long.compare(this.x, o.x);
			}
			
			public int hashCode() {
				int hu = (int) (a ^ (a >>> 32));
				int hv = (int) (b ^ (b >>> 32));
				return 31 * hu + hv;
			}
	// 
			public boolean equals(Object o) {
				Pair other = (Pair) o;
				return a == other.a && b == other.b;
			}
			
			public String toString() {
				return "[x=" + a + ", y=" + b + "]";
			}
			
		}
		
		public static int[] sieve(int N){    // O(n*log(logn))
			int arr[]= new int[N+1];
			for(int i=2;i<=Math.sqrt(N);i++){
				if(arr[i]==0){
					for(int j= i*i;j<= N;j= j+i){
						arr[j]=1;
					}
				}
			}
			return arr;
			// All the i for which arr[i]==0 are prime numbers.
		}
		static int gcd(int a,int b){       // O(logn)
			if(b==0) return a;
			return gcd(b,a%b);
		}
		
		public static void debug(Object... o) {
			System.out.println(Arrays.deepToString(o));
		}
		
		static void catalan_numbers(int n) {
			long catalan[]= new long[n+1];
		    catalan[1] = 1;
		    for (int i = 2; i <= n; i++) {
		        for (int j = 1; j <= i - 1; j++) {
		            catalan[i] = catalan[i] + ((catalan[j]) * catalan[i - j]);
		        }
		    }
		}
		
		static final class InputReader{
	        private final InputStream stream;
	        private final byte[] buf=new byte[1024];
	        private int curChar;
	        private int Chars;
	        public InputReader(InputStream stream){this.stream=stream;}
			private int read()throws IOException{
	            if(curChar>=Chars){
	                curChar=0;
	                Chars=stream.read(buf);
	                if(Chars<=0)
	                    return -1;
	            }
	            return buf[curChar++];
	        }
	        public final int nextInt()throws IOException{return (int)nextLong();}
	        public final long nextLong()throws IOException{
	            int c=read();
	            while(isSpaceChar(c)){
	                c=read();
	                if(c==-1) throw new IOException();
	            }
	            boolean negative=false;
	            if(c=='-'){
	                negative=true;
	                c=read();
	            }
	            long res=0;
	            do{
	                if(c<'0'||c>'9')throw new InputMismatchException();
	                res*=10;
	                res+=(c-'0');
	                c=read();
	            }while(!isSpaceChar(c));
	            return negative?(-res):(res);
	        }
	        public final int[] nextIntBrray(int size)throws IOException{
	            int[] arr=new int[size];
	            for(int i=0;i<size;i++)arr[i]=nextInt();
	            return arr;
	        }
	        public final String next()throws IOException{
	            int c=read();
	            while(isSpaceChar(c))c=read();
	            StringBuilder res=new StringBuilder();
	            do{
	                res.append((char)c);
	                c=read();
	            }while(!isSpaceChar(c));
	            return res.toString();
	        }
	        public final String nextLine()throws IOException{
	            int c=read();
	            while(isSpaceChar(c))c=read();
	            StringBuilder res=new StringBuilder();
	            do{
	                res.append((char)c);
	                c=read();
	            }while(c!='\n'&&c!=-1);
	            return res.toString();
	        }
	        private boolean isSpaceChar(int c){
	            return c==' '||c=='\n'||c=='\r'||c=='\t'||c==-1;
	        }
	    }
	}