__int128 read() {
    __int128 flag = 1, num = 0;
    char cum = getchar();
    while (cum < '0' || cum > '9') {
        if (cum == '-') flag = -1;
        cum = getchar();
    }
    while (cum >= '0' && cum <= '9') {
        num = (num << 3) + (num << 1) + (cum - '0');
        cum = getchar();
    }
    return flag * num;
}