K, S = list(map(int, input().split()))

ans = 0

for x in range(K+1):

  for y in range(K+1):

    z = S-x-y

    if 0 <= z <= K:

      ans += 1

print(ans)      
"""

Y+Z=S−X  が成り立つことは分かるものの1通りには決まりません。

満たすべき条件は 0≤Y,Z≤K と Y+Z=S−X なので、変数 Z を消去すると以下の不等式が得られます。



0≤Y≤K

0≤Z=S−Y−X≤K

変形して、Y≤S−X かつ S−X−K≤Y



つまり Y の下限は Ymin=max(0,S−X−K) 、

上限は Ymax=min(K,S−X) となります。



"""



K, S = list(map(int, input().split()))

ans = 0

for x in range(K+1):

  mn = max(0, S-x-K)

  mx = min(K, S-x)

  ans += max(0, mx-mn+1)

print(ans)  

   
K, S = list(map(int, input().split()))
ans = 0
for x in range(K + 1):
    for y in range(K + 1):
        z = S - x - y
        if 0 <= z <= K:
            ans += 1
print(ans)

"""
Y+Z=S−X  が成り立つことは分かるものの1通りには決まりません。
満たすべき条件は 0≤Y,Z≤K と Y+Z=S−X なので、変数 Z を消去すると以下の不等式が得られます。
0≤Y≤K
0≤Z=S−Y−X≤K
変形して、Y≤S−X かつ S−X−K≤Y
つまり Y の下限は Ymin=max(0,S−X−K) 、
上限は Ymax=min(K,S−X) となります。
"""
K, S = list(map(int, input().split()))
ans = 0
for x in range(K + 1):
    mn = max(0, S - x - K)
    mx = min(K, S - x)
    ans += max(0, mx - mn + 1)
print(ans)

+""" +Y+Z=S−X  が成り立つことは分かるものの1通りには決まりません。 +満たすべき条件は 0≤Y,Z≤K と Y+Z=S−X なので、変数 Z を消去すると以下の不等式が得られます。 +0≤Y≤K +0≤Z=S−Y−X≤K +変形して、Y≤S−X かつ S−X−K≤Y +つまり Y の下限は Ymin=max(0,S−X−K) 、 +上限は Ymax=min(K,S−X) となります。 +""" -    for y in range(K + 1): -        z = S - x - y -        if 0 <= z <= K: -            ans += 1 +    mn = max(0, S - x - K) +    mx = min(K, S - x) +    ans += max(0, mx - mn + 1)