#include <iostream>
#include <array>
#include <cmath>
#define PI 3.14159265358979323846
// Length of factorial
uint32_t StirlingAprox(uint32_t n)
{
    return (uint32_t) std::floor( ((n+0.5) * std::log(n) - n + 0.5 * std::log(2*PI))/std::log(10) ) + 1;
}
int main()
{
    std::array<uint32_t, 10> frequency = {};
    uint32_t length = 0;
    for(auto& i : frequency)
    {
        std::cin >> i;
        length += i;
    }
    // Check special cases that share the same factorial length
    std::array<uint32_t, 10> factorialSpecial = {0, 0, 1, 0, 0, 0, 0, 0, 0, 0};
    if(frequency == factorialSpecial)
    {
        std::cout << "2\n";
        return 0;
    }
    factorialSpecial = {0, 0, 0, 0, 0, 0, 1, 0, 0, 0};
    if(frequency == factorialSpecial)
    {
        std::cout << "3\n";
        return 0;
    }
    factorialSpecial = {0, 0, 1, 0, 1, 0, 0, 0, 0, 0};
    if(frequency == factorialSpecial)
    {
        std::cout << "4\n";
        return 0;
    }
    factorialSpecial = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0};
    if(frequency == factorialSpecial)
    {
        std::cout << "5\n";
        return 0;
    }
    factorialSpecial = {1, 0, 0, 0, 0, 1, 0, 7, 0, 0};
    if(frequency == factorialSpecial)
    {
        std::cout << "6\n";
        return 0;
    }
    factorialSpecial = {2, 0, 0, 0, 1, 1, 0, 0, 0, 0};
    if(frequency == factorialSpecial)
    {
        std::cout << "7\n";
        return 0;
    }
    // Use Stirling’s approximation to get a table of values during compile time and check if there is a hit
    // Have to check until 10^5
    std::array<uint32_t, 100000> lengths = {};
    for(int i = 0; i < 100000; i++)
    {
        lengths[i] = StirlingAprox(i);
    }
    auto loc = std::find(std::begin(lengths), std::end(lengths), length);
    if (loc != std::end(lengths))
    {
        std::cout << std::distance(lengths.begin(), loc) << "\n";
    }
    else
    {
        // Stirling’s approximation doesn't work anymore :C
        std::cout << "-1\n";
    }
}