def contract_first_update_search(p, contract_hash, start=(- 1)):
    head_level = p.shell.head.header()['level']
    contract = p.contract(contract_hash)
    (origin_level, data) = contract_origin_search(p, contract_hash)
    if (start > head_level):
        return ((- 1), [(- 1), None])
    start = start
    if (origin_level > start):
        start = origin_level
    for lvl in range((start + 1), (head_level + 1)):
        new_data = contract.storage(lvl)
        if (new_data != data):
            print('Ntf first:', contract_hash, start, lvl, new_data, '\n')
            return (start, [lvl, new_data])
    return (start, [(- 1), None])
def contract_first_update_search(p, contract_hash, start=(- 1)):
    head_level = p.shell.head.header()['level']
    contract = p.contract(contract_hash)
    (origin_level, data) = contract_origin_search(p, contract_hash)
    if (start > head_level):
        return ((- 1), [(- 1), None])
    start = start
    if (origin_level > start):
        start = origin_level
    for lvl in range((start + 1), (head_level + 1)):
        new_data = contract.storage(lvl)
        if (new_data != data):
            print('Ntf first:', contract_hash, start, lvl, new_data, '\n')
            return (start, [lvl, new_data])
    return (start, [(- 1), None])