import java.io.*;
import java.io.IOException;

class Main{
	public static void main(String args[]){
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int  	n,
				x,
				a,			//1つ目の数
				b = 2,		//2つ目の数(ループの初期判定のために2で初期化)
				c = 3,		//3つ目の数(ループの初期判定のために3で初期化)
				count;	//組み合わせ数
		
		String[] input = new String[2];		//入力を受け取る配列
		String output = "";					//出力する文字列変数
		
		try{
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		}catch(IOException e){
			System.out.println(e);
			return;
		}
		
		//出力
		System.out.print(output);
		
	}
}
 import java.io.*; io.* java import java.io.IOException; IOException java.io class Main{
	public static void main(String args[]){
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int  	n,
				x,
				a,			//1つ目の数
				b = 2,		//2つ目の数(ループの初期判定のために2で初期化)
				c = 3,		//3つ目の数(ループの初期判定のために3で初期化)
				count;	//組み合わせ数
		
		String[] input = new String[2];		//入力を受け取る配列
		String output = "";					//出力する文字列変数
		
		try{
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		}catch(IOException e){
			System.out.println(e);
			return;
		}
		
		//出力
		System.out.print(output);
		
	}
} Main public static void main(String args[]){
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int  	n,
				x,
				a,			//1つ目の数
				b = 2,		//2つ目の数(ループの初期判定のために2で初期化)
				c = 3,		//3つ目の数(ループの初期判定のために3で初期化)
				count;	//組み合わせ数
		
		String[] input = new String[2];		//入力を受け取る配列
		String output = "";					//出力する文字列変数
		
		try{
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		}catch(IOException e){
			System.out.println(e);
			return;
		}
		
		//出力
		System.out.print(output);
		
	} main {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int  	n,
				x,
				a,			//1つ目の数
				b = 2,		//2つ目の数(ループの初期判定のために2で初期化)
				c = 3,		//3つ目の数(ループの初期判定のために3で初期化)
				count;	//組み合わせ数
		
		String[] input = new String[2];		//入力を受け取る配列
		String output = "";					//出力する文字列変数
		
		try{
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		}catch(IOException e){
			System.out.println(e);
			return;
		}
		
		//出力
		System.out.print(output);
		
	} BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br new BufferedReader(new InputStreamReader(System.in)) int  	n n x x a a b = 2 b 2 c = 3 c 3 count; count String[] input = new String[2]; input new String[2] 2 String output = ""; output "" try{
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		}catch(IOException e){
			System.out.println(e);
			return;
		} catch(IOException e){
			System.out.println(e);
			return;
		} IOException e {
			System.out.println(e);
			return;
		} System.out.println(e) System.out.println System.out System System.out e return; {
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		} input = br.readLine().split("[\\s]+") input br.readLine().split("[\\s]+") br.readLine().split br.readLine() br.readLine br "[\\s]+" while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			} true {
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			} n = Integer.parseInt(input[0]) n Integer.parseInt(input[0]) Integer.parseInt Integer input[0] input 0 x = Integer.parseInt(input[1]) x Integer.parseInt(input[1]) Integer.parseInt Integer input[1] input 1 if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				} n == 0 && x == 0 n == 0 n 0 x == 0 x 0 {		//2つのデータがすべて0の時に終了する
					break;
				} break; count = 0 count 0 for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				} a = 1; a = 1 a 1 a < b a b a++ a++ a {			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				} {			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				} for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					} b = a+1; b = a+1 b a+1 a 1 b < c b c b++ b++ b {		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					} {		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					} for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						} c = n; c = n c n c > b c b c-- c-- c {	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						} {	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						} if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							} a + b + c == x a + b + c a + b + c a b c x {	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							} count++ count c = n c n output += count + "\n" output count + "\n" count "\n" input = br.readLine().split("[\\s]+") input br.readLine().split("[\\s]+") br.readLine().split br.readLine() br.readLine br "[\\s]+" System.out.print(output) System.out.print System.out System System.out output String args[] args
import java.io.*;
import java.io.IOException;

class Main{
	public static void main(String args[]){
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int  	n,
				x,
				a,			//1つ目の数
				b = 2,		//2つ目の数(ループの初期判定のために2で初期化)
				c = 3,		//3つ目の数(ループの初期判定のために3で初期化)
				count;	//組み合わせ数
		
		String[] input = new String[2];		//入力を受け取る配列
		String output = "";					//出力する文字列変数
		
		try{
			
			input = br.readLine().split("[\\s]+");		//入力
			
			while(true){
				n = Integer.parseInt(input[0]);
				x = Integer.parseInt(input[1]);
				
				//終了判定
				if(n == 0 && x == 0){		//2つのデータがすべて0の時に終了する
					break;
				}
				
				count = 0;
				for(a = 1;a < b;a++){			//aは最小値から徐々に+1していく
				
					for(b = a+1;b < c;b++){		//bはa+1からc-1まで+1していく
					
						for(c = n;c > b;c--){	//cは最大値から徐々に-1していく
						
							if(a + b + c == x){	//a,b,cの合計がxかどうか
							
								count++;		//組み合わせが見つかったためカウントアップ
							}
						}
						c = n;
					}
				}
				
				output += count + "\n";			//出力内容を入れる
				
				input = br.readLine().split("[\\s]+");	//2回目以降の入力
			}
		}catch(IOException e){
			System.out.println(e);
			return;
		}
		
		//出力
		System.out.print(output);
		
	}
}

