import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Main {
	

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	}
} import java.util.ArrayList; ArrayList java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {
	

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	}
} Main public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	} main {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	} Scanner stdIn = new Scanner(System.in); stdIn new Scanner(System.in) List <Integer> N = new ArrayList<Integer>(); N new ArrayList<Integer>() List <Integer> X = new ArrayList<Integer>(); X new ArrayList<Integer>() int n; n int x; x do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0); n != 0 || x != 0 n != 0 n 0 x != 0 x 0 {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} n = stdIn.nextInt() n stdIn.nextInt() stdIn.nextInt stdIn x = stdIn.nextInt() x stdIn.nextInt() stdIn.nextInt stdIn N.add(n) N.add N n X.add(x) X.add X x int[] ans = new int[N.size()-1]; ans new int[N.size()-1] N.size()-1 N.size() N.size N 1 for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		} int i = 0; int i = 0; i 0 i < N.size()-1 i N.size()-1 N.size() N.size N 1 i++ i++ i {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		} {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		} for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			} int j = 1; int j = 1; j 1 j <= N.get(i)-2 j N.get(i)-2 N.get(i) N.get N i 2 j++ j++ j {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			} {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			} for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				} int k = j+1; int k = j+1; k j+1 j 1 k <= N.get(i)-1 k N.get(i)-1 N.get(i) N.get N i 1 k++ k++ k {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				} {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				} if(j + k > X.get(i)) {
						break;
					} j + k > X.get(i) j + k j k X.get(i) X.get X i {
						break;
					} break; for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					} int l = k+1; int l = k+1; l k+1 k 1 l <= N.get(i) l N.get(i) N.get N i l++ l++ l {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					} {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					} if(j + k + l == X.get(i)) {
							ans[i]++;
						} j + k + l == X.get(i) j + k + l j + k + l j k l X.get(i) X.get X i {
							ans[i]++;
						} ans[i]++ ans[i] ans i if(j + k + l > X.get(i)) {
							break;
						} j + k + l > X.get(i) j + k + l j + k + l j k l X.get(i) X.get X i {
							break;
						} break; for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		} int i = 0; int i = 0; i 0 i < N.size()-1 i N.size()-1 N.size() N.size N 1 i++ i++ i {
			System.out.println(ans[i]);
		} {
			System.out.println(ans[i]);
		} System.out.println(ans[i]) System.out.println System.out System System.out ans[i] ans i String[] args args public class Main {
	

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	}
} public class Main {
	

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	}
} Main
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Main {
	

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		List <Integer> N = new ArrayList<Integer>();
		List <Integer> X = new ArrayList<Integer>();
		int n;
		int x;
		do {
			n = stdIn.nextInt();
			x = stdIn.nextInt();
			N.add(n);
			X.add(x);
		} while (n != 0 || x != 0);
		
		int[] ans = new int[N.size()-1];
		for(int i = 0; i < N.size()-1; i++) {
			for(int j = 1; j <= N.get(i)-2; j++) {
				for(int k = j+1; k <= N.get(i)-1; k++) {
					if(j + k > X.get(i)) {
						break;
					}
					for(int l = k+1; l <= N.get(i); l++) {
						if(j + k + l == X.get(i)) {
							ans[i]++;
						}
						if(j + k + l > X.get(i)) {
							break;
						}
					}
				}
			}
		}
		for (int i = 0; i < N.size()-1; i++) {
			System.out.println(ans[i]);
		}
		
	
	}
}