val MOD = 1000000007L

fun main(args : Array<String>) {
    val (x, y) = readLine()!!.split(" ").map { it.toInt() }

    if ((x + y) % 3 != 0) {
        println(0)
        return
    }

    var numX = -1
    var numX2 = -1

    for (i in 0..x) {
        if ((x - i) % 2 != 0) continue
        val x2 = (x - i) / 2
        val posY = 2 * i + x2
        if (posY == y) {
            numX = i
            numX2 = x2
        }
    }

    if (numX == -1 && numX2 == -1) {
        println(0)
        return
    }

    println(modComb((numX+numX2).toLong(), numX.toLong(), MOD))
}

fun modPow(base: Long, p: Long, m: Long): Long {
    return when {
        p == 0L -> 1L
        p == 1L -> base
        p % 2L == 0L -> modPow(base, p / 2L, m).let { it*it%m }
        else -> base * modPow(base, p - 1L, m) % m
    }
}

fun modComb(n: Long, k: Long, m: Long): Long {
    if (n < k) return 0L
    val kk = Math.min(k, n-k)

    var n1 = 1L
    var n2 = 1L

    for (i in 1..kk) {
        n1 *= (n-i+1)
        n1 %= m
        n2 *= i
        n2 %= m
    }

    return n1 * modInv(n2, m) % m
}

fun modInv(n: Long, m: Long): Long {
    return modPow(n, m-2, m)
}