import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	}
} import java.util.Scanner; Scanner java.util public class Main{
	public static void main(String[] args){
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	}
} Main public static void main(String[] args){
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	} main {
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		} true {
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		} int counter = 0; counter 0 int n = sc.nextInt(); n sc.nextInt() sc.nextInt sc int x = sc.nextInt(); x sc.nextInt() sc.nextInt sc if(n == 0 && x == 0){
				break;
			} n == 0 && x == 0 n == 0 n 0 x == 0 x 0 {
				break;
			} break; for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			} int i = n; int i = n; i n i >= 3 i 3 i-- i-- i {
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			} {
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			} for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				} int j = i - 1; int j = i - 1; j i - 1 i 1 j >= 2 j 2 j-- j-- j {
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				} {
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				} int remainder = x - i - j; remainder x - i - j x - i - j x i j if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					} remainder <= 0 remainder 0 {
						continue;
					} continue; if (remainder >= j){
						break;
					}else{
						counter++;
					} remainder >= j remainder j {
						break;
					} break; {
						counter++;
					} counter++ counter System.out.println(counter) System.out.println System.out System System.out counter String[] args args public class Main{
	public static void main(String[] args){
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	}
} public class Main{
	public static void main(String[] args){
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	}
} Main
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		//データの読み込みの準備
		Scanner sc = new Scanner(System.in);
		
		while(true){
			//結果格納用変数
			int counter = 0;
			
			//データの読み込み
			int n = sc.nextInt();
			int x = sc.nextInt();	
			
			//終了条件の判定
			if(n == 0 && x == 0){
				break;
			}
			
			for(int i = n; i >= 3; i--){
				for(int j = i - 1; j >= 2; j--){
					//iとjを確定とした時に、残りの値を決定する
					int remainder = x - i - j;
					
					//remainderが初期条件を満たしているかで、条件分岐
					if (remainder <= 0){
						continue;
					}else if (remainder >= j){
						break;
					}else{
						counter++;
					}
				}
			}
			
			System.out.println(counter);
		}
	}
}
