import java.util.Scanner

fun main(args: Array<String>) {
    val (k, s) = Scanner(System.`in`).use<Scanner, Pair<Int, Int>> {
        it.nextInt() to it.nextInt()
        // 0≦X,Y,Z≦K
        // 2≦K≦2500
        // 0≦S≦3K
    }

    // zを定めると、x + y = s - z, z in range 0 .. minOf(s, k)
    val result: Int = (0..Math.min(s, k)).map (fun(z: Int): Int {
        val max = s - z
        // x + y = maxを満たすx,yの組み合わせの数は、
        return when {
            max > 2 * k -> 0
            max > k -> 2 * k - max + 1
            else -> max + 1
        }
    }).toIntArray().sum()
    // resultの最大値は、2500^3より少ないが、Intの上限を超えるおそれがあるかにみえるが、
    // 一辺2500の立方体を平面で切った時の格子点の数なので、2500^2の2〜数倍程度おのはず。

    /*
    var count = 0
    for (z in 0..Math.min(s, k)) {
        val max = s -z
        count += when {
            max > 2 * k -> 0
            max > k -> 2 * k - max + 1
            else -> max + 1
        }
    }*/

    print(result)
}