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

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	}

}
 import java.util.ArrayList; ArrayList java.util 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 n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	}

} Main public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	} main {

		Scanner sc = new Scanner(System.in);

		while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		} true {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		} 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; int count = 0; count 0 ArrayList<ArrayList<Integer>> duplications = new ArrayList<>(); duplications new ArrayList<>() for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			} int i=1; int i=1; i 1 i<=n i n i++ i++ i {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			} {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			} for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				} int j=1; int j=1; j 1 j<=n j n j++ j++ j {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				} {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				} if(j==i) continue; j==i j i continue; for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					} int y=1; int y=1; y 1 y<=n y n y++ y++ y {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					} {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					} if(y == j || y == i) continue; y == j || y == i y == j y j y == i y i continue; if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						} (i+j+y) == x (i+j+y) i+j+y i j y x {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						} Boolean breakFlag = false; breakFlag false for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							} ArrayList<Integer> dup duplications {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							} {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							} if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								} dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1 dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1 dup.indexOf(i) != -1 dup.indexOf(i) dup.indexOf dup i -1 1 dup.indexOf(j) != -1 dup.indexOf(j) dup.indexOf dup j -1 1 dup.indexOf(y) != -1 dup.indexOf(y) dup.indexOf dup y -1 1 {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								} breakFlag = true breakFlag true break; if(breakFlag) break; breakFlag break; if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							} !breakFlag breakFlag {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							} count++ count ArrayList<Integer> dup = new ArrayList<>(); dup new ArrayList<>() dup.add(i) dup.add dup i dup.add(j) dup.add dup j dup.add(y) dup.add dup y duplications.add(dup) duplications.add duplications dup System.out.println(count) System.out.println System.out System System.out count sc.close() sc.close sc String[] args args public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	}

} public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	}

} Main
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		while(true) {
			int n = sc.nextInt();
			int x = sc.nextInt();

			if(n == 0 && x == 0) break;

			int count = 0;
			// 重複リスト
			ArrayList<ArrayList<Integer>> duplications = new ArrayList<>();

			for(int i=1; i<=n; i++) {
				// 条件に合う組み合わせを数える
				for(int j=1; j<=n; j++) {
//					if(duplications.indexOf(j) != -1) continue;
					if(j==i) continue;
					for(int y=1; y<=n; y++) {
//						if(duplications.indexOf(y) != -1) continue;
						if(y == j || y == i) continue;
//						System.out.println(i + ", " + j + ", " + y);
						if((i+j+y) == x) {
							// 重複チェック
							Boolean breakFlag = false;
							for(ArrayList<Integer> dup : duplications) {
								if(dup.indexOf(i) != -1 && dup.indexOf(j) != -1 && dup.indexOf(y) != -1) {
//									System.out.println("重複!! : " + i + ", " + j + ", " + y);
									breakFlag = true;
									break;
								}
								if(breakFlag) break;
							}
							if(!breakFlag) {
//								System.out.println(i + ", " + j + ", " + y);
								count++;
								ArrayList<Integer> dup = new ArrayList<>();
								dup.add(i);
								dup.add(j);
								dup.add(y);
								duplications.add(dup);
							}
						}
					}
				}
			}

			System.out.println(count);
		}

		sc.close();

	}

}

