Problem:
How many ways?

Write a program which identifies the number of combinations of three integers which satisfy the following conditions:

You should select three distinct integers from 1 to n.

A total sum of the three integers is x.

For example, there are two combinations for n = 5 and x = 9.

1 + 3 + 5 = 9

2 + 3 + 4 = 9

Input

The input consists of multiple datasets. For each dataset, two integers n and x are given in a line.

The input ends with two zeros for n and x respectively. Your program should not process for these terminal symbols.

Constraints

3 ≤ n ≤ 100

0 ≤ x ≤ 300

Output

For each dataset, print the number of combinations in a line.

Sample Input

5 9
0 0

Sample Output

2

Note

      解説

Solution in C (judge verdict: Time Limit Exceeded)

#include <stdio.h>

int main(int argc, char** argv){
	int n,x;
	int stack[100],stack_posi,sum,check_num,ptn_cnt;
	int found;

	for(;;){
		// Input
		scanf("%d %d", &n, &x);
		// Finish Check
		if( n == 0 && x == 0 ){
			break;
		}
		// Search Pattern
		stack_posi = -1;
		sum = 0;
		check_num = 1;
		ptn_cnt = 0;
		for(;;){
			// Check Total
			if( sum == x ){
				if( stack_posi == 2 ){
					ptn_cnt++;
				}
				// Success & Search Next Pattern
				sum -= stack[stack_posi];
				check_num = stack[stack_posi] + 1;
				stack_posi--;
				continue;
			}
			// Get Next Number
			found = 0;
			while( check_num <= n ){
				if( sum + check_num <= x ){
					// Save Current Number & Search Next Number
					stack_posi++;
					stack[stack_posi] = check_num;
					sum += check_num;
					check_num++;
					found = 1;
					break;
				}
				check_num++;
			}
			if( found ){
				continue;
			}
			if( stack_posi >= 0 ){
				// Fail & Search Next Pattern
				sum -= stack[stack_posi];
				check_num = stack[stack_posi] + 1;
				stack_posi--;
				continue;
			} else {
				// No More Other Pattern
				break;
			}
		}
		// Output Pattern Count
		printf("%d\n",ptn_cnt);
	}

	return 0;
}