Problem:


Score : 600 points

Problem Statement

There is a grid of squares with H+1 horizontal rows and W vertical columns.

You will start at one of the squares in the top row and repeat moving one square right or down. However, for each integer i from 1 through H, you cannot move down from the A_i-th, (A_i + 1)-th, \ldots, B_i-th squares from the left in the i-th row from the top.

For each integer k from 1 through H, find the minimum number of moves needed to reach one of the squares in the (k+1)-th row from the top. (The starting square can be chosen individually for each case.) If, starting from any square in the top row, none of the squares in the (k+1)-th row can be reached, print -1 instead.

Constraints

1 \leq H,W \leq 2\times 10^5

1 \leq A_i \leq B_i \leq W

Input

Input is given from Standard Input in the following format:

H W
A_1 B_1
A_2 B_2
:
A_H B_H

Output

Print H lines. The i-th line should contain the answer for the case k=i.

Sample Input 1

4 4
2 4
1 1
2 3
2 4

Sample Output 1

1
3
6
-1

Let (i,j) denote the square at the i-th row from the top and j-th column from the left.

For k=1, we need one move such as (1,1) → (2,1).

For k=2, we need three moves such as (1,1) → (2,1) → (2,2) → (3,2).

For k=3, we need six moves such as (1,1) → (2,1) → (2,2) → (3,2) → (3,3) → (3,4) → (4,4).

For k=4, it is impossible to reach any square in the fifth row from the top.



Sample input:
4 4
2 4
1 1
2 3
2 4


Sample output:
1
3
6
-1

Submission status: Wrong Answer

Solution code:
# compiled by pythran
"""
#pythran export main2()
import numpy as np
i4 = np.int32
i8 = np.int64

INF = 1000000

def solve(a, b, H, W):
    ret = np.empty(H, i8)
    dp = np.arange(W)
    dp0 = np.arange(W)
    edge = W - 1
    for i in range(H):
        if b[i] == W:
            for j in range(edge, -1, -1):
                if dp[j] < a[i]:
                    edge = j
                    break
            else:
                ret[i] = -1
                return ret[:i+1]
        else:
            for j in range(edge, -1, -1):
                if dp[j] < b[i]:
                    bi = j
                    break
            else:
                bi = -1
            for j in range(bi, -1, -1):
                if dp[j] >= a[i]:
                    dp[j] = b[i]
                else:
                    break
        ret[i] = np.amin(dp[:edge + 1] - dp0[:edge + 1]) + i + 1
    return ret


def main(in_file):
    stdin = open(in_file)
    H, W = [int(x) for x in stdin.readline().split()]
    a = np.empty(W, i8)
    b = np.empty(W, i8)
    for i in range(H):
        a[i], b[i] = [int(x) for x in stdin.readline().split()]
    a -= 1
    ans = solve(a, b, H, W)
    p = '\n'.join([str(x) for x in ans])
    print(p)


def main2():
    main('/dev/stdin')
"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'H4sIAOv0Tl8C/+19C3xTRdb4TZ/h1RsqankoAQu2PEpDCzSAmAKBG0ihSwsLCoaQpjTaNjW5KeCiom1dYiii67rufrrrPlS+Xb9dXBEREVqQFlQQkJciiohyS0TwsYAv8j9nZm56723Ca/f//X//389AM3fOnTlz5sw5Z86ZmXtzv9U+KUGn4+RPAjeOw9zuXhaStzD4mZejRQBWwHWC777cjVwK5JMU5SycRZWeZ6jlVM/KJbJ6BQk0X5BgUaV9WDk51SnSZE75sajSZ+7lVCnHGaP1kNasFRSatWK+Kl3FkK5JUddLYPWkRgqVGuerUi6BU6Vy/5LYXymDl7J+yelEVm6iojx+ij8Vy/B6di3Nz661qNKNrNxGTb2fQb0U7vI/BpbOYO3F48uhRE6VyuMwrNKzYGT+sMqyoZWe6sDioYsLRg4dmZ/j9+YMJzQZWNnJ02ZGxztBQXMPBsP7uuphea/0PCk9veTbCTkTcla889qRdLxnYnVS4a8+zTC/a3anBKy5rCunw3sj4M8Mf399dOyWp1yvb+v8wCrHSx/k7R/ypeOOfSXP1C1vcF1316/XDv19n5r1PZ7sOmGx7a512db99ovxRQImpseAL+Fiw31JseH/SIgNT0uNDc/VxYanx4ELceh8Kg78izjwlXHgGcmx4Z/GgfeP06/Vcei/Nk75LnHKZ8cp/0oc/t8ap7wtDv6/xxlfa5xxPBaHb7PitHtNYpxxj1P+hzj4fxOH/hVx6Pw2Tvlb49CTHYefiXHofDdOu/o45X8TR35ej9PuqDh4HohD/ztxxrFrnHZ3xOHzd3HKV8Vpd2IcOg3RmUT9GRwHzx6A9+Ou5bYz+yvXbeAoXGLw2Qy+JYHCLWw+ku36zxmeYgbPYPBp0K/uWJ7hke35CNbfNRkWFT3d2bjU9FLDb0+m+CsY/mXyeDE6hRVq+LgUbLcX1/Qoo5M1XCaPlwZ/XwZfpYFzMO/4xTLX4ME414zkHI6FVd5qh190+kSHg3PcNq1ELPB4/Y4FTr8731btESearLUAL51VIppGANTjgtI+t7NqQaDc5gKgyVXh9DlEn9Mj+m0uqxVxLl7sqHH7/N5qZ6VHXOKozSWYvXk1AdHqItimmXIdDtfixc4FnlrTcLj2exyuSqff7xCX1LgdnupyrxUrTS0RR7gQBKhNeY4ixyJPmbsa7ntEQhfQa6ZUAdUx6RnhqnQ7fVa4M9xhg57Bn+gU3VC3rLIYUZSI2L5Y4fMuclS6qxeKFQ63z+f1FU8FUoFGp8NZWel1QR2He7HLXSN6vNWkmmmkw+GlzACC/G6fGJOAGQDLozSy0rZSR2muw1oy0lE8tSTPUUn7MRIbqXQzhgNgFOGQyWQyt9f2VC9kOGI0VeLE9iaYsLN5pLPTa9zVVd4yN2NlFOPw6EgCwvioTHnlnuoyR7nH5xcd3nIrsKSqSkPc5aIaDoPn8lZDuYBLtFa5KOfzZc57A9iCw+esXuh2lFeJ0NQ9GnmcOJyKog3GXDkSV0HNKJ8bxqvWba2KjiQlY4GzzOFy+kVsqHpR1QxgmrnaS++JsfRjgilKlCnPF6gWPVVuKj9MOqOUMvKvahxGKcYByFGORWnp1YuKrGLtROYvqnCKHQTwcsnMhTH2uWsqnS7gbBVSeHWIzIDHWQOyW2ZlSGAsrpZ3IwnvwLZoWUd0mwwtFQJz1Ap4FwLidiOAXdAMLtNSIIdJB7VqCvJGKMmLYywVo9ChBRCsGVOvgndW1rFyn1ttsK5yHFwgQqLbOqOKqkq+CzT13xhVv9+zsBp6VpJPpxvviPLKgL+CcBMNskbjYL6qolMVXC10QSOYM3GOmdWLcFhnuP2BKjfedNFi5V4QG65cdFeCWcXmwCw7yp2eSg7IE72VXLnbW86VL3SLfoSAwZeNvOhe7BG5KneVq2YJV+6q9PrdXBUx/Qis8ta6uQWuqhoojq2xObPK6YHWgNXc5AkTHHk5udxku238hNmz4To/Z7g6azKpsmYOrgrH2xymnDx1NVU5eu0YnmNqvxyeM4JEd4kQDSZCmhy9SoR/yRBzJ5Fr+pcKcTXmaQ6/O5HSCKN/9BtrdmZ4OHI/meCj/5IY7kTi9+i411La/bPigUu6cFD39lQ5zk0hvhHer8G/878BlJ04VyqFOUlez/lYPnh/dgJGqg+w/Lv/uCsZVyoeYfm7Sfkk7ncsL2Y/pkcK/zvaXgJ3KKXdf3v80SdScOXhZVY+0MvTCfnVxMpLj1A/CmP+HIV7dEYBH6ZcJWH+WDKLm6NxpAJuVsC3K+AmZXysgA9X4m9sh+cp4MUKeL4CXqGAFyjgsn+I8NHKeHQVhacqfFbiHyvgCQp4lgKeqIy3FPAkBbxAAVeuL1kUcOX6iqCApyr7q4DrFfDZCngnBXy+At5ZyR8FvIsCXqOAd1XAFyvg3RTwZQp4mgK+XAHnFfBVCrhBAX9SAe+ugD+jgCvjmdUK+DUK+BoFfKQCvl4B76GUBwX8WqV8KuDXKeC7FfDrFfBDCniGAn5UAe+plHMFvJdSvxTw3gr4eQW8jzJeebQdfoMyPlbAb1TGiwp4X6X8K+DKeNKogPdTyr8C3l8p/wr4TUr5V8AzlfKvgA9Qyr8CPlAp/wr4zUr5V8DHKOVfAc9Syr8Cnq2UfwV8kFL+FfDBSvlXwIco5V8BH6qUfwV8lFL+FfBcpfwr4GOV/Kn7XC+EkhsXGzmhoUlMiOwW6t7Qb+UiIx4DUGTA4/DN97XAFeYrsErb0Qh8BjyMeTRxbbtJ/kHMo2lrayL5ezCPJq1tDcn7MI+mrO0Zkr8T82jC2laR/ALMo+lqW0byt2EeyW2rIfkZmEdT1Taf5KdgHk1UWzHJj8c8mqY2C8mPxjyapLZckh+OeTRFbUaSH4R5NEFtBpLvj3k0PW0cyffCPJqctjMXMJ+OeQPpP8l3xnx30n+ST8B8Ouk/yX+3CPLXkP6T/FeY70H6T/InMX8t6T/JH8P8daT/JP8+5q8n/Sf5vZjPIP0n+Tcx35P0n+S3YL4X6T/Jb8B8b9J/kv8n5vuQ/pP8XzF/A+k/yf8J8zeS/pP87zDfl/T/R8w/hnkj6T/JP4z5fqT/JP8g5vuT/pP8PZi/ifSf5H2YzyT9J/k7MT+A9J/kF2B+IOk/yd+G+ZtJ/0l+BuazSP9Jfgrms0n/SX485geR/pP8aMwPJv0n+eGYH0L6T/KDMD+U9J/k+2M+h/Sf5Hthfhjp/w9k/DGfS/pP8p0xbyL9h3zx5j2Pzeek/cC6zbgWtAmzG9aA1kkvArrZW8tz+L71ROX4vhPBVzllC+65QwgeE+qOnykutbU2rSmzcEJrs4Ukrbt7g85d+4Vo5L4h5b9WIbBw69cDauEW/BavWU80GdS302YERI6Wr9pKarXX2UTKP/AFSZovJArBM0KzdKugaxH2XBC7RzGkMgza+stusUF/ucD1M4Xgp9J9wICW5FEA0c2jJbXlwys19FrG85yiD4WzSoqF4CebatzQ3eBH0lLgLKZ4Vwj1yRQaDotZQt0EYyTQTwiNERonGARzq5gs+YHZWPAuTFuTyBxgakKjdXvhHVttwZaL1h7Bag9V1LYHz0lHYIyUBHMzC39eOKtwZmFpifDA53owM7bgBaFxaaZl098qLZy0EwRDaK3PXM3MaEt95hpMN6OAbEInVnoTUCJHs4Rgs1DXbBCCeqHVQnytFosBaluMaD0hJfNJOAF68WqEfu4XgvWZOCZCcEVmE0fb2s7asocqMy324AuZhyBT1HBKTLbVWY06WygFax1lA5ks1EEDCnpGM3rGCcGtQl0T0JO4iRAQ/GgDmk0p+D3yZAKjagKhSgg+lSnRZgIZbaWgTqbDChhfXwggW6iKm/jwvdzmjGhjO38gjfH1TxEkW4XGgK5wWWSmwFv/JTRuzETfWFqeg3VTSLlvB+G4v0BuCIhYIoACIRTgpMh3OGqJAnQzEhgohO7lhEYrG1EXuXdauh1T4JLsdUMP9KwnxD9E5NtZj0gKPeoZHgvd6XhDHABN6SOBG0lTDRFopitr5ptvIQ3JJQ/z9endcBIdw/H1/boROdiNnr8Q2kiGByrz9TdAVzb9AgT9VZweTXulPyCyuvNw6w9qmXniezpG2UJwGx0jK3TASoXGikJjZcNjlYXmFMi3dMf5SARFv5FKJMrBaoVUIsFUml6gKaiHkapHT5V6XPctVY80SO3BtUT0bITrN9mAFbYo10+dxwKnpU/PI9cnZpLFb9SP+ULjWtK2NCUPIXSohUYxc760fCiSUs/GGAb962uRd5YMYFeGEJyYmSGEKvSbs6Ls+OV3TIoe7oIK+EY5f7rpa/5+1Bk6pq1Ql6bE1xSyj9iCp23NkUR78DyYt1vswbLMLL7h+y5MqBzYMpA9jfLLFhqbSYf3BgAUBfMzi4Jipn5qY9IFG5BjwDorB0MdWyPmAKS3gaFBrAah+RQI5DZdeDixfEJwHnRlm14IbreHoFF7MCwEwQRtBe+qMrMAbsGI/6jjV35AxgFAtuARZPUnY6iChOyAM5QthKARYUxW4O94lSWEOGw2V8jeZgt+YUPD3XDKHjzzKuk2P7F5WiPclM1GX5v5bTs/+WO77oydH/9xUcNxMX1K49hPSaBw2znsc2s40WqKQA/PIV7j1GCfc4gxJGbmimn2IAzqWSF4UroXxxUIN2KfihrOQndEPRrKb87ijYnYwQIhWAG8GnICRoaQ3dY5QmtlgPpkRMTraFIohOaCXDQcDgTafkukcR7YsIDebv6ab8DzDCiOeuTFb87K9WGMHsYMIghsVtX4nbKGm9RYmpkh3X5Wo/+sUdAlIuj9VYI+9CwV9AFnqfwS57gIxKEIOAEdPWPPBgE6DyN8Xsc/9JUeDZVDv9kYFc3PzzHRnDMQx2+bEJybKQiNfY5Qq/mR9AvSwsTMYtThFlBh0FmDjinhk1SHSYCnQPobGWmSjPQjKY/gqc88T6p2RHVGgarIfIGvtxJiU7HOMjoX8CuDSehx2FELw9dTeQXRFca8QIrw9Z4kMg1GdXflsHbdBYmQdmXTxp5hxoRqMFg/UzqimoAaPNge+oVSed88yzqzMxUrz82cHVd9ia4xHUYxzz5tD/4oNP+YKKyXJVswb+N/+VQqzjpgNu8gdEWkh75B5mxF6TPgZEF0+WcIJOoU7CkE5+iFxiTQxUID1lyZqaM9JTUaBShjB32ra9ITNbM1n0601bXqwgNswSGZqOuoz0EjihjocCuof2vEVhcBPT5MCAew1K+ADhY0mWsP9SOqYB9jDGxkZJH+GW3ZbxQFP0MNBrVUa/AQlQbvBA1uoxrchrM7avAposFPfk16C0b/8JTGpK+JxZwSHPI1IgSxNYppIDAwXPbgMWnjN1FVJApMtXfk11R7odsZqL1gPcJUda+PKB2g8lV26PFsW93kjAgxZyJPrgPu8PByIj+20LCi0CLQyH/xDZ3onI0aeVp69yucGSLSW5DSOiZl2RuUZZ9nZf/wVWzdxakZRY4IbmxFLvuKKvLcrxSKHJWHkEUvZJ8HMUWbEeKFUCnqY9eT7ap9PbkzGaz0CqZiSW3YvAGlOsI37ANHRop8SRs5B2nbFoCUr8KshOBWK4ujt+lt5i/EhWir0Ox8Qak9oaD2LWkd1Ai/gf4w1l8do/7ki9avjdYHnuLs1BCEgKNtxQW190rHh9z/Nd5/suN9ZH8WaT+RNr8Vmv+Q+WuhwThEYepvHVf6W9ulr88ACc2rsL50RltfrGV1T9O6krLu29IrWJcoiiA07ODrR6Aw1H2rC6ThiBULdVykrR8RkB38ygx6M8lfAI4xDlzbeTa0GegugPVp2A5uSttb31KZjkKPI/QE8WS2C3VHfwA1/0EI7hKav0gQ6lp0wa/qjulI810S0WU4YNpRztc2oYoXtzPpa97b9R34Kn3HAN9z3zHCd9k7ueX8vu3wtxvMGN6+H25D9hD8HYUcKXY/FAN/H4xKy4XAeqFhr3gzIR8QJL0JX/Y3oUrtXqiyBf4Acj+C7wcwZYy5mRQXe6viEaEuaQtMh006uB/4Cm3zcrS0s+6EYMRyE453UqbNDJrM109MQDZlKOaVW79kpviFvmhgW4XGsWSekg6cppNUhi2YWtgyWc/ZWieTmQVSMqNYTWeRtzBcTXbedkaBM3yG4Zzdl5g/O3hOxmmN+f+SQ6p7CG7NhMUmKlLxTkIM+LlLMwUO2W/kV+q74qBHkvyppqa2U+i2rY+GRHVNPwr9zguNNTCaXwnNJ2E0t+iCe+o+BlW+0NXPl/Pe5GdHo4Pd9gnR5F0wuAhcRYDlE+Hy13CJF92eYhfX/hkveO+Av9F06Es0HfEaTW/ZStNub41WhrerALS7vBAloZC/f+J+DpPS/QYZvAcuDuHF+/SGEZO5+3PJfX7fPnKb33eE3rXQu8Xs7gF29yN6dz69WwPdRWGDYLIliW/4BfpaKMW7O+Nc3WM/Tql23Unh3HtI7gtmQva1a800/mYo3wNJG38Gvnqh/AFGoxBpDhxrCwES0w4QVr5hOsSJbXfD1+Z1d+I6Bny9mnuXhdvwA8Zs9Z/Djfsgltn0IAY0oyrgBtpc6S68cRiykkld5JFyKDIHiwh4A8mULoTRF31DaHwq06CjoRdxKWAO0OuiETWVRBYgHuqDUl2DatUjGkE+cQqY0C4hg2l1sOzpi3psHrMQiPlLWCbrd3AlV9x0AijbgItz0gQkhbXx6PXYRq4QKtZHm7gJEbRHaN+cImIfuB4jPEKz+SOYho5AKfCrwxWoXRC4gT7hjEILvBfoDHqfiK5PmLcFeYyBsG+24GQDXuvptf6ibGidbGQpifxsrUmZuwOWqJe2ifB1JJBBHKS/9kbO9UWnOysacoUsEmh+kvBAK2ZDa5MQY90unbQZBibcG6ekmSfbmSQEPxSCW6QZhG9zM2vQh5uPcyxZBW6ZmFkDTnl9Jp4ILQKO9EDvsVjHwkBpDGAKj8W2jaTtFZlZ2E1zU+01tuztpIzpLMTCLwH6cA9BAbIFm6Sn1Vy/73PK9WvQTMynLL8TGjCdCs9WhspgQOer+d1NCBaRSQPIh2kILirgQh+jL9rYWgglT7/DSGJpyr1uszGLTAyuSFKO0+LG+RyKA+18feZ8MuronbS0UccGS82GjiBrLShV9zI+12BmtwSdbXecHw3TziaZDoft4O9p3ebNuBwghRB1sJksi6D3Ci5CMBun3mScenUA0AutE1h4PIG51nPB14Ui/ejs3Eu9ktKzjS5xdIcUxWs1iNemZfC1oWauBUz6Cen5kyRsNh1uCxN0LeicEJ/7CHSBUI9CVCxhB+I180+JNvNXCZ2/E9KDgPQlHYkMCUY2wJ2lIBQIJxJY8ra5qpHYNfdKR2KsFGckvpYUIzHpBGsSCWtrQ8JAncSfgSNrhHi2/nBgEoY/El1DCSxqW0Ms1K22xsmsd/tOUJf2bUjrD4t7wteSDihtxYsnaMc9J+hSkowtO+xumwsuSduzxB60RPnJqQuK46hrOErlCN9+gvqoJSdoRyW2Whg2KFG9/BlFdZShGkJRDVChMjBUeobqqLxXBBUPXaziwc9oxXc+oxUPKSqyBTOyLKtny7JEdP7JKv2OVdquqLT+Yq15WEUnq7ieVSTrktf1YitXfEMXvFStXg37jK5e3fyZYvUKfZYDJ4iAt43vyYSRxiF8gwhD0vYyhbb9D6Rt/9SxIrhKU2fJiIjDqBdKrqe2X/P1axUhDd+Qjaju7Eld2axo1Ppfn9KVjCzp0U9lhxarB16WnVt7aDHEUN/jegrxsbOoevVTq1fJp1S9pn6qcc4/CrQq3GS6fDLwU3n5pI+qUb7BHmn3qi+v4feP04b3Hr+Mhv/nuNzwn4/Hjv34+kkZZG0Bh3AMXirHvuo4HXv3cUXY19Yjgw7Q8us1wzcbee67PjpiBtJLEtlikDybLPjCsI0lCV//rGrEemHt/OvpejQZrC8+oeQbpOOfyKtUb9BVqnsJqybbQ4MxeB9OV08Hq+XvH59Q+Xv+kyir2mmRmfa6HAkShi39hHJXlNvjG24nQ3S5bY5hbeZdfpt61ib3Sbwh6ntddIh6XKcZojeP0SHackw5RKeuhQms3Tm81iP7j4OPoepN3MbRIKcVgpxgZabBHtxI1qgUkcfdx1nk8WE6izzOSd0+uUSw8WM6iXxswZMs3tgge412ulhAwg+/ThF+zCGTyPhLBx25OSToeE8VdPTOiQYdxhwWdNzMLq7NyaFBx0iaDh1H0xGTaHrLNJp2m0VSsrOmjDeSDpLI4GC8cOMgDTcOxg43DtJw42DscOMgDTcOqsKNwDIINUSzrbHHQQSzGEMYSmOMYppeJL6A8WxnuGiAeNYWTGqVR/pr4LKOrK4LEMEKfP27BmL27cHSzFx+ZV0KtZWCvXE+eHzouhWEb9GsZ9iDrdLsoyDiZDQVgwsoyFqn+Qgd43q7ge5C0NWEJEkYA6gDtxY1HOeXD0xGF/UHvvFlA22zGEtg/DTVPPFTbukcKFXUWJYZuf9023dJyoAQbqC8zuaXP0bmko8JmmqDPH62kLgT5v+WpTcAJ4VGW+T+U+G7FPEkqRyeAzcXlwrmb/nGPEIBrleFepwUzAeW9letB4Cq7MR1kvu62MylO88jxnvD7f22mffx9Qd5LMroaxQzdba6Hy7cP8Cmu2Cru3BBaG3GojZ++i5byGIAEdeFe5fL5e3mE3Z+2jn5jj34pRBcSxbjbMEaAzS8iZTip50tCk0xkIzAT//SVtecUBScAva1KcEWtBhs5rOgnuvZWud5gf/HBbv5XOBuAb4qheC7ZKXHkkC2cF+TiQ8PK18lbI5GdbqDgvkdfsWmNFyt2SOY34KG3qOy08LXJyYgc+3b4KtHKwSwi7cJwYNCl6UoTO/ct6vtl2mEX1bTXmi4kH98i9V0WCBXW/mGl0hPz/ENY0m8c8be6QwQxdf/HSf35s8Sbc3HEouyDwjk8pNEe/aHVlMTxMnRkLOdX8HWqaEhqbbQ3G64vrm4rwCWpkspUvH+fVltujSlsOB6zob2/sHwvs+v+BA3ErPDgvmQwE87NK0xCVAcspl3TWns2j3wDFwL5guBJ9uuIZRSxqXidZRtpCPfcO2UE5KD35rOKlg7iu9LHnVRtN84dhBoIb9iHiFAEsxbgcGH7LoDdt17MH58PV31z7aFJo4gfdsKkwLjcOt9O9sGdJMpum8JNitzy7TDDjxQNK1cX1aO72nS/Idd1c3vheYF8y5xgC00BELmBGx5h7LlvW1/64q8pP0h01hQUvTLtBt4ya/Yg3h1wNd3iW0gFoGvf40sNG3VUc8k2EdCk0DFGyS+oQnnuAIxG+Q5gvIsLpCv+Pr/IpuiFgNMen/6HhcgUX9t1DXoXrhssZ4LdJbmfsBsERqmzYflDDaOCqPQVIY38HtbaDRDcQ9B0ZOggAr24EFp6WGWUdcmWKOkNbhRoTVo9h5WoBkhZzqgIP3Z+x3WLyC71n+Fa9IbvgH3q6WH5U60rfpO9g1bkyTEIZj38/UeXK0DK9tYpRP4orAt+IGt+Ydbbf0+wNif7ESFCukeKtHdYKHBdNie/anA244oJvfHP2CTu64L9dbQ2tvZeiUGVjcdRj8hpbBlEq5WTmKLI5PaZ/oxXeiyYsOp+3oQKqc05h8Fz8ce/E5KeR+dIDHTaA+tZTThnm5wEg65OIYMOt2+jY6WrW68IRK4NzzTTnZTQmxXDbd0rKaz9K4jPMoWGgdca0cgdi1cdh/wP1maQdo8J214TykEtOJA7WANeF8xWMvlGmR0xNSihrOBrLBNK2pfvqcQtdL3cAXorHiTrW4SNNCH0tVOzRvvUWqGvEfH0AiesEGnWH245jAbgFm4fwdqfLFdO337rt2HZHN6ffs+Vgv/yz92YtuEuxLopuiBQ2QPmm5yh4DL88Fz/VS8nc7pmar58CNp+SHt/sjn4k0X3R+ZdQj3R2T0ZDTI7jYOCNlxGnGI7g3q7UGzPbhETzfCQS6BypVZSGUzxP+bFpbTTzhXJgjpOX9QES7acLOfNFD3vU5ovD3Cr5Rw1gjN5ExncX9ojxDcbTv3BXyTg1bN3yUIui1CY1I6/C0Tzh3i19XrHqi0cMvr88naQF0LoFnSCdzP9EXN6CQgTxZf30Jvw/0LCfcOaLuXnadi4KFYbc1QZaGl8x5mC4+Nj5N0uf26yHK2dNKYdB1o3wWhcUWmjixINPtzMJOg08xP/DoDv25OZHnG8p/htkMEtyUabTrfCcWqnHSInlZxgROOvnVdqwFPBcgrp50O0EVekJP5Qt15g68vWm/cyjPtlZYySSCrdlggaDXgeYXR4KPoAv0epvQWLk8NZ7HzcmGran8yGMH1RrpBfUwaeoCK83yyuBcq4lqSdB1W9Gi8A46WBV1BPZJiker60IDGQgR14AUMr0hA0xsvo8LF13/3IxjBf+0Hg4/nIXFrcjnHjpWMTaGnsvS2kBUkoEhPwgBwTjCEwPCMnLirawFn6x/nBPN2sdcqIWTA1fZ6HTq3iT66BW1uBnlurGdr4vKQUXYCz6T9qLtSUaiKs4+p0PP1k3HpNRQA5xNm6X2KvXlQfqOuKFSuR5am2UIjycbwMek5YJNd9wmVXaIkFj1ZL8bHkW3mbfSC7E8CWlLpO+luHEdoE0N/n133vT3khopWIzXjViO2cU20/DGpkIwFuY8xmVG7APjiPhpW/vc+3CFmlGCHxJlAm5KxDbUR1VZC8UJ5K+HHd+mq3SoUxrm4CTZGT7uPkLZaHe1Ow585ygwa6wd6gjm0NU5ihGTto7bQuE+12Nz9ALOAr7Kza/SwXHQ9H9SKDJB5Dxlzvp4c0At2kZf1cS22Ddd8VP4OdHj9u8j971V95uvnRaLs5ev5CNryezX8jSj4+5308T4Nf/+m5O8T0s+gmfAj0TVHCNxXyUtqsmyZWwnpwINMKGw6HBa+5r06YuXZfgRZPw4+Hnc/ItZBwVXymbghidFN5F7Y8cgeYDA+MSMEv8AthcheoNAohJI/m8rWcRvX4+3QmqPwjTsSQ0kfk1vk+6HVax6bT1k0C5Avu7eAE5Mftk4IX4/4N+8lHMFN7U14lDFSnMtvOkNalEr2oLS1Sof3MM0WO9nIek1xeIhqvaLXXrpekb6XrnbITKOl+9tg3imiZ5AC1dElkk/30FWVI4gdrAh0aoKBDswEg+iRr/j65Uw7lzMeNeDJv7Y/cnJ8iN14ck/H/fi/X2o/3rUH9+PZamqXZb8gs/yHe2hfJhGy2iniGxZHqFVTFH6RFe65h64NMxLFVMquQtRIcsqozmogBfD0klgOd8EpuddWBy4WmEtcMmt7mCyHz6M9/ACPHnyksqLA5pd209b+tpuyeXl0uTdGK4HfyScwU5bdq+fEBcimu3eTkQTvpo71JAV7IjoQbeluNCpIUuC69uN943bTJfeRu6nZIIecvsWA8oE38HDv7YVzC+cV3lHomLdV+tNuap46y83wDRnAtPCvpOWM9DPvRNv4Z/h3Mf1CYm6Ij8c3jANHqu0a+Nr8TDVYsiFesGQr4WsDHvaX8t5Rmbjv3fKCWC/1jafukm/o8Ib5brjRAl+vZvngBj5HIEm74MY7gHnTl9jG7TVw4wLOxO/gjefA19j0P/D1Kl8FN3bgjXW75N3RpXAlvfKOqpzHJ5dbuYusi4fH4tcoXGJ9n23XxFiX37OLsmnHLrUi0RmHLi8TK0RnIHl5ma8/3i7rsZeYF+2iQ+Pd1XGJue33nHLX5LT05k4YtJFsGdgS9yTgTYza3ruUJ1mjpAY8GjIvsQq+bycl8e2dsVfB9cpV8Od30mVkvfT0TuqXGkmQRLS10IAbaE0MjNnpCu0M1LY9zQg1smVpsrtpJEFBsvTBTtkgQTu37lSYARld4MW4lf/A6DJKyTvVNiHmRszRtykLD72tVmm2vkxVWaXfYndqPYZSNRKF8FxZ0bugogMNvRkj696Wtf1djd36ljXrfDuWyk99m6r8hLcVKp/She7zfLFTfSDKwrUf96/73GALnrMFLyhcggs7qad7B7gDEFvCDA6ebhbxnEIsLu39VtTbBck5z9feiP4lDjN4bit34s1txIvA+2CK0WvqR5zdboUPpxYut3LhdJiIc0ikegH9qDlvUZ9WT+biUBfq0qqnXVvwRqHuDUPUfm3dPA+doQtvEn2NbvttepN6OmeBGXS+manssCAEv7YFfxCCJzbNxOqnL6AXMob0b1ISToH36zm+/nUypkMyyQbbZISDU4LuLvQfOul5Wz7V/jxH9wKwft8kopb20K1yaaF1C4aIUicyflsVbP7N28zz+hUxpduKdBfAX5J39+3ZX5MVmyA5nfc9jNJpX29ksoG2n41ygOcu7BAxB6djTCcuxOgsUFL4cNpyffg23MbVsR4ERrStUh++70lbF3u2n+GwtU4mZ+8LWyYbuPAgqylC91bmhEeAT0HOSr8vvbiDHarEMxy2EI/j1OG4BqnWX70ls3oHdR6e2dH+MIoiEg++xbjxDxI9b+N/3sR3j3v2HQ+lF+CpVTJqqxLw7NYpe3BpZm74JlxvBCko2EFNnD76FAnIHxQ2QuFNs/GcTxIVZnvwpPT9DiLPBI5HMwzSez9Qk0KC5frJ5JRZnhCaqic1jkmeN+lhMkssM7txO1XWtdspDaQPttB0csA2W+If7EU6GS4KflaU/YXQSIwUDGRR6Fa7+Yydn3QGVzU6kc59SoK+/EyhEQ+oByVb3QWD7wZCpBD8DCShL6MEjFrXTERjxMqDinSnoagucE0hv44HeeipWm9oJWr3lXSsFbuZlMkeSAAacEAVcvLlDionYxUP9oRKoTHzSTw1m0uc3CNikRA0MGMrGJTBK/X3cPcwOhiC+TSrekS0S6uAAnUFC8cbUvjuOsSXAfiAayKtnsHOrxg7PFBELRGq6rskR0JvvfSrbjTe1ZNRPPtjNN4N/6iOd/H5JSkZSCHP85ETEBg/Kc46SC30rMPRFkTyhqDwolD0FPLYgI/wxfRy8lviRHi98QYxZia8+gRubPrlnXgO5aSpSSpqVVVr30Y8vg0IXqZwBZDAzdsiEXYY4A+c9jBA/xaqhb1a1I+EvYmjYCb+QyU9NjOMzvhZ6hn/2DY6Ub2/TaFd7NwKHg9PZ9tXufhAFvEX8BpmXRZZEiRPb6Pq8ett1FBj/+I/j5YBerrsviwwySMSsafnhOD3Qui+XGJwOyVqnjYytch2+aZElcHLaqWCPMhGj1DZwMja2NNGhfi4kY0toNjkx40SrXT/DVR+sC002UjME7460t5YlmlQxbshsMonNuG7CySuhRmyw2qDu1qG30INHD6RU9cC9XJx4n5zKz3bH0zKtAfPoMH39UQpJhp+Swvd76UKXkRs/SBi66/j14HKgnZrzs+ifn+G5jrhDVm/468UkRnueeKjQtgdmqlHAem5lWy9wxhehxJgN5+DgTu+lY7+B1sximccGU9qFkgnoCnIN0zVMZRVZIVQXiN6U2j+7lah35uC7k1+3VyDcg2icRsdmgLF6TZ+07vsgT2IN7eSpVH1w2DdFPbMdIqcDYYpXepHniqB1g8Qs5+fSZaLdpA5eqbeNmaWHoSyYa84HNeJoGNS8VZC9uNbycpJoFu4f/kq02GSEa8nHBAL6g+LM8K1L+lokZOrVAsr72yhUowTvaxSlHPb1brz3BbKvd9vwdNSuBxOOdjw+o9xzpAmYY0H3kANUJibmBbkveY4NqepWT6HWtvMZKxVwsPgmzJqLVy4F713W/u9zZ05xUk41NOngUVhcpQaMs80Uzv45FayphmNQIRmXIs/FSgN368EmwActhAnA1kysl2YftNM2fEIlrgRS4DVuY4W4xWcC+wPH6IexUC1LZvVTG3ZtGbZdWzl5I2T77YoTQo+f4uPtIYcFkWsn2cL3VGA+VI6hxep5vDzTSz+bcIDgpPI61DCg1RF9rMiO2kRulJOcQZegItcRWPDIG/EfDE9EmaLHgn7A8PyS4rFGKOhSlakjBbJZQ0hvsAauDAoGtLLTwerMAxiGPpTDNSpYgXLV5WgSW1NJUds61r1kp3tAewjQ/TR7W3hzUp2dijfh5X/i1z+NXX5qDkHxxgX+H5Bn5URYUxsob5FIS/EmuFAv/Bktr+JFnHxZk1MeUQcYA/dhJHEaQyAcDsEAyD6tCJ08k3JClXCW+lJYBpz5m2mwjp4M3abvCqmPXpQyAfSRyabJ3X04WfWOfCyjPSw8Y5NGFlhtheeAsceSwM208PCYLD6ZEZnwxb093CLqrgIbJoRJdNCHnbA48BGPA4cPEEOAz+H5PZDR6UGLde51yGbLkTv48ngus2qxVocfzSUmRh7kTkMLDtOCub3xJtsQbignjl8hXsKGB2SM5hDN+F57ePhfN6QiE413QYksZaWbhvk2Cw4MVM+GTxiuJGu9QihboXD5cOo9iQj1s2ix1CXQica2bIQkbj1r1MPIYseQMVT0oFN7evY0vaNqnPAwc20a7PACql9f3oCOPi69gSwPdgPhSGFCEOcI8B34J4A2PQcsOg0g3uFRHh6q4QnWdK/TkNo7nUiKhYwjmB6UR5QYlBeyF4eU9r3NyqOABdtRNN3nJ4doOj5hseJjqqaeHYjbeJpSMOLCDo6RJ2lhzfSs7ituA6c287uvbmXyW7bxg7sTnldwe45r7EGcKr64XWqFvsgRX+7g/7/wPT4XVKgw/0h7MUCa19n5d56TaXvxH9DdVpNfINUHNg5xABnoLhnRZ/CL0GqzXMzs8Q0YPZqwmwyx6FaQYDwEVU+O6DfFEa9y2aW5q+vyQ8yBHrGnPZ2bMBJAVefAn2ZE8oeCKhrzQ2JScW48L4WuZ6B+KZsoOqdy54DmAL4QSH0N1MgBhMbULQk02vydHrzBjJl2qFABoae+mik14KRClqA+dFHBZaxJ8b1kmEDrtSx41b2zNnKhwT0xC6sfE3xkIBeNgWLAWp5WSevs0irX8MnAjbhq7w24PthEfbNa/TJeFxls5sj4o3ScGzteiUsWboRYJb6U2I3rLLn1fZz50U5RvYAdqjbnJx2wcvFnhXIx82Xsb2VVVHZ2/kqlb0CWfZqpIc3UNlDjZCOrKcekvs1lCbtekyGLfiNEPzRjg9NjllkEPuQ3W98wiuYYmP+FHjK+jZ8z7gdtwPxgWUJvZXm7xNBAtiBKysITY8M3Ipubrul/RlTuLFH0B0S+PF7wO8TghC7iukgCPvJM2HDX21/Tpy2mfSRLRoXfWnPbhOdEPaeD25vlhJxi6ruaKroNO01nVX6/7bQ0v1gbcYeBKu5n+3gt5zHw5OCeXfgY3vwOyH7K3vjgvP2oCRkn8FdWZimvy3wD2nbTo6rLdSjx9zQGc/ediMB/3dYVC7HP/hHgnPLeVtwH/r3IbDf9qjDI4QEkjfIr9wAgAEBGdH1k5CQgQAjLqQwgBEBWdG3CYSELATkRiPqkJCLgAIA5DJAAQIsACigg/KGBYyxxW4+wzd4cGOv7g2wyqdg6gHBWv9Kx+c9L36e4aFX6HkG6DSe7CVhiO8VFB1wGYNu4MQ2snBrKGrMBzMWQAcmQ+EXX9F8/u06eT5/CiKHDfhqIWnmK//WfH7gFdV8fvO6jvP5S6+o5vPH11/VfD5v3b83n7sHtU8wdw+6zAlGernDBPPsOsUEc36taj5/9ZWLz+evvvx/eT4veJlOtrkvk/kcn++5yHze+WXFfH7v2subz/evpU3sXNthPt+wtn0+P5vVzu6E7Mtk95K1Hdg98mUFu4MvKebzIevofJ60js7nKP+24EG0sPbGAQduNnIzhcahH0JaUhj80RY8i0fR8F1ozT8mSif+SR9gMpoOt5/vBPNzdmLwdGGkxwdkGdp8JHCSxAvzou7zKsXzw1vZu9XI29ToezNjfXRczJ/niL7zUU5TNKlek3bWpF01aZomNWhS7WdYmbt2mF8s81RzvsH4WlZuWIW3yj2s2nOnZ1iVp9rj8laXOfOGuatr/cOcostb5vbhb20Mq1kiVnir83IKhvk9ontojdN1l3Oh20/gPmc1u+9xDQuInkr/MH+F0+cuc/jc5TkVNTXcBG+gsqz6ZtGIL5c1lnsq3Uau1Dgoy1ntrV5S5Q34jdXOKrcfsLqzR4+WcY0eTZCNHt2ObSzQPno0e2/u6NHK9+aOxVfmjjOOGz0aGvE5Ra9v6LisbCN5Zbbx9lLjLcZL1Z0HNA28CpouWQXfvw5VHNhxBX2D1ORdEZp5nJL+0aPp256vsgNXwtRBV8rTAf7RRoejxus3Zi2q8LgqjB6/ccA9gWzjOKNY4fEPHef33OMGpOq7nG3YdCNt0+OtNsJ/8kLhMiI8/47s1Lpd0Iuxld7qhUMo9ezt9AwInb2kDF0GjnkcLTR6NHtTOueprnVWesqMlaA/PmelsdzrM2JhwL/II1YY8Y3oRlPu6Jv/A727XFGCkerQgSuoewW8+t+jaB5n7Az/u3XSaIjy9fnG6kBlpbHaKxrJmGhK+gML4JKbhGYKy1CjBcPlczvBci7kco1jbzFWGwcOhK+xxjKn6JSl+D9uTknXoIpfJIYUs8gDI0LGlo5D8Sp3+9zVLvdl2w9SlYhp+9DdPi8LIdl04PBy3lWK4eVS4XMucjh9PucSWWPiy9FVopzH3bNk8aLagOj33V3jra6qvOtOT8XCcneZa4HTXDBq5Ij8vOGmXNPwvPwRI0cVmJ0LXGXu8oUVnjvvqqyq9tbc7fOLgdpFi5fcwy0IlAOT/y+NLSBBmsnw1nrBQFxud1lFZoYut1YNjFWNu53p+EsgHlCCe9yOcp+3yuFeXOPLosy3GgcqBGKIsabkCgZD2c4QQHX5NasDVTVLCB2XFiZZZByjR5cHqqnBhanmMthBWhk9uswtOokIO+kvZ3iqy9yL2414FnwWgI7nZhtvBZyo98Q4QW23D0xGpafKI/rHlrldlUh91oJsYGmVczEI8GDjgmzjaGPWZZT3VNPyiN6ZDR80Lf29tW5feaV3kdFV4Xbd1f8/Ln5R3g0Dg0fED7ttvBKeQ8UsKhvEelDD6EHqPcA00vOFbnFs7rgsBxGH/7x99FS7KgNl7hi6BExGl8hdLRrx5rj/Zb3qYFmpTg38jyiULJjjbrkayRx6hZI59P+dZDrLyq5OMqGiSjJ/sqxRy7qQmFZKyP8mR4wDL78mUCd6FgagnKPa66siXCxz+Cs9LjcIP8dNMw13TLZPH19odzimOUwFMoIRpP4o23Qr/gSM9RLlTCOt1bUeH/gGYCUur0ZeiehEZpRdVnGzVf79mEsjHg/+v6I4e68/+72LsGhR/c6FDG9mcGPAooI/xuAFGvh8Bi/WwAsYvCKg/r2zZSyPG+Qknc1Sze+iGTXlntGUu0Tnc2c5KwNuxlIlXVJATW/09whq1e2tmqtuT9c7ccxG9tsMGX+MRMhb5/4SiSxL4LjFkOIrTFZDmgTwimcjEXxnzGJI18P9jOciEQl/XeVAJDI2EWiBtB7S1R9APcwfjURKoXzGsUhkOeKF9C9YH9ImhH8SiQxJgvSzSARfrlUAaQbgq4C0BuDLpUgkH/LSyUhkDR6kORWJnId09hdAB/vxD/k3KHT3zOB0iw263l1T9at0qQYD+32HJ/8cici/MxC7LF0DwrJPQVl5/SmT/X7A+T9EIrm45ZxmmJSWMYXvski/jLu115hBeZn95fUj/I0/I/BIXpvCepWI76NI5EZc4BqfZihMyyhMM9YlrkxIOIWXhvFpegC45Wtcgse1xeXAM/L7DQCuS3Ck6dnvYOAYPRXjHi674xitgXtPcLSt8WkZ49OM49OyCtNy61JWJDcmrUx8JCGhPi2LgDNIET3F2wPo63E8Erkhivfn0TbxzVYZxzu2KZA3rcEfjNOsBHov2ub4tNzCtIKJacV1qStSGpNXJj2S+FBC4i0JaQVAzXgFCYUEF44JrsA2gez1Y+1gK9HfE76n2E5GKzURf3owUR6zIWyM1v8pEsHTsklrfmHR8Hm6gs9cMf6mL/52BYzxsWFQvgnKd6R7clpTuorwI4NjEV4IxehvAuOx6jf2RiInkYa/LLVo+T8xzaIYghexEdUoFKZZCG14NLzy3UjkzyDXSRuXWmLydJlORdukpNi0LQP+IM6JkG4/FIngEeak80tj93e3XoUzITE2zt16+svNOFbHPwR9xV9JKrhX0V/oGHAvsS55BelroiEBGaDsaVMi/e2NDwDHmY8jkd6IY/a9CroIjt2Ag1JTrcBAqUhEnveBermfMRqWXTkN8u85G9CmgI1xM715JAEKrky0phkbk4ABK5KFtNyHUoS0grrUojSLjzBGM3xU/wGPoa3dduAnEtF1ReHuof8512cRyUO38eTup7r0t7K5wwndlmVza1PSnxzCtaSkPziEez9V/30Wd0S/5Nkh3IFOTwHOr7oZXh3GPZhmaB7G/YnXPzOEe9bgPziMe7L7QzAav++Z/t1g7uUbO5/N4jbfeAfHPd132JtZ3Nt9OwOaA31HwfXqfuk/3Mx93q9/8Gbutf7CvwZy/zWg858Hcr8cmP7bgdxvB75q5Li9k/RP3cbtn8Kvu507PuUejvtwKr/9di5YxP/mNu7JohB06s/T0x+7jXt5+lPAuz0z6nV/uY07Oacz1PpmTjJcfzunLVnuc48Sfq+OW1AOgqfrDFd7dRkEPgLyCOM/7sQd1O0BpKuT+I87c3uT+ec6cx8nPwKQM6ndVnfmnu104weduK2djupknKMfSui2OpX7VQLY1EiCfk8qV5dk2JzK/TOp29ep3Oak30PdIyn6X6dyn6YAx79N0f8Kf99rm47V753BA4E391iezFUP+1cS93Ri5+eSuOcT9yfQ+/3QMJSGdC8mch/pRnHcEwnjQbIOJ/Rblcj9kPCHKB0XxfPT56fPT5+fPj99fvr89Pnp89Pnp89Pn58+P31++vxvftb0ZuvKbH13WW/LT0z5/+iji5O+mKLOv6bJH2J5+bzj7OvpuMu/Mb22jObl307OYvsG8m8jy+cg5d9QLmD35XVY+Zzlvy5EvJg+mUDxyb/BvUZP8/Ia+Hl2Xz6P+Tb78W35N7Ll33a+VtP/6G+As99pltdW1rCDoPIavvxb3vJvR69Ot6jg67tbVHSfYWknTfsXIrQ/5w20fITlZTrOsPxSw/9bPZLYfpb28xAb5ydY+hxL17G0haUHWPoZS8+yNCWDptexdCBLR7J0EktnsbScpbUsfYilT7D0OZauY2kLSw+w9DOWnmVpSk/WPksHsnQkSyexdBZLy1lay9KHWPoES59j6TqWtrD0AEs/Y+lZlqYwO3kdSweydCRLJ7F0FkvLWVrL0odY+kSv2PIxecKE0casmQsC1WLAWJCTn5M71BQgOdN9poKc3PxsCuVclc7qhcZat8+PxzhNuTnwb2i+qmjOcONFZSQRrEFBgiUGPIErjQlP5MSY8KSofqvhyVG9VsNTovqvhqfG1JtE0MrzMeGdonqrhneO6rca3iVq59TwrlxNTHi36LyohqdF7aMaznNNMeEGbnZtLHh3LmNRLHg6h9tTHeHXRO2wGt4jan/V8Gs5S0z4dTHtQyJYR+mRWPCMqH1Vw3tyqx+NBe/FNcWE9+4AwxcOJnFfRmLPax35cA2D41aS8jOQwWdr4GYGX6aB2xm8SYP/DgbHrTnlp4bBN2rgDzL4eQ38cTIXtctPPwb/bwavmUPhP7AJS2Jweb99ACvfU8fwzFbDixhc3qe/gcEfYPD5dgo/yeAvMHjxzyn8RuYIHGBwi1NNT/cEhl/T7jgG383gTzD4Ywk4Zr24vY/NV/kZG2U8fWh53EslfkMio6eIwv/MHIP/YXCuhNlTNo9PSaLwJtbf3ozOXzP40TuY3WXwI0mUnj0aej4ncD56zkGe1/skU7h83kKGT2fwYg38QQav0MDXM/gyDfw4gxdo4Pi2E4TL5zGGMPh4BpfPpzC2cQEGf0wDX83g8jmU4Qz+IYPL51CyGLxzKoXL51wGyX4cg+fWqstXMHhTQA3/LwZ/UgNvTY2t13tT6XgZNHHGPga3aOAnGFwbl/yYSsd3t2Z8u+rxuqM9zNNTPGs0eG4l5Tva1Xj030HKd+deiGGfY5Wv1FNvWWv/7yd4Otrh5Xpq5bT0/5bBtXS+QPB0tM9b9GiVOn72x4F/oUcqe3LrNXb7XwDvrphHZD7znWLjGZ/GccYY80JZnPL1nRB/+7wpP7/1qzjlnydwsD9sHH8l8yFO+T1x4D/Egc/ojLavJ7dGQ7+jc+zyD3RG234tJzD+LJPjrTjlD8SBfxkH3rtLbLgzHeEd/ZCxWD4B7CfjjxwPlcbBszAOfHsc+LE48ElpbFzYfCefoTobp3znrrHhNzD4mgx1vybEKT+zK+X/dsZ/2ePdxWP5jv7es13p+Grl/MU4+NO6xYbfGgf+RBz4f8eBvxYHfrQb6kW7H2VgineuG+2vxPo7m5UfkhYbjyWN6rVWHx8n+t6LO/SYGl4UB48zDvx+Nu5NvdXx/G/TKH4tn5+Ng+dQHHg+Hxs+Jw78n3Hgb/CUTgvTF7c878Qpj69hiAUfFQf+6zjwb+LAO3VncE18Mah77PIPx4G/GwcejgNPTI8N/3k65c+aMrXdWBin/PI48OfTqXzK52nldaJt6e26qZr3GR7tuddvGZ5ihifqp11D4RWNantbcU1seoIMvkobx0Gg7XCTU8EO0bmg0m3qCMntCMrrCBrRATS8A6RjtfwOkBFc9CCvP7DAYXOU57hqajjHbZd/xHfCcNuUwuFmh8tqtU6smTG11HFF1SfmWmsvXUF9nvqq6gy/jDp5fhH6Yy2e6rpk0Xx8dPWykMrn1ymjRl4Jo+Sql+oweXDPlNv+4J6tRBxJn9W0TSvJdbT3zlritJWMcCAJF6e9YEHAUyl6qv3507zVbiuWnGoyORzs8Q5HeX6VEx/XsV2ao9AYEpGPAFupw2oy+dz+QCWIIACs00tGOSj2SxCCqEax58JG+GsqPSK0PkXTPexYqavS74td30or+muwCADKrKPKvb5FTl8ZElZeQxhTM72k4PJIIkIg01SAD5RWeqrdSNaMdrpIoYsRRgtEq1+SOPPlESfTle+pFh1A04wOrKqcTmVQISyXHkwUoDwgxVwT8Fc4Fjhdd8EQ5iGeEtFe4HB4vPioDGRLbVfynMBllNc+VHE5VTQPeFxGlRhPkVy6VvszKpcua1Z3oeQKuVRy5VwquXIulVwVl0qugEslV8SlWVfIpVlXzqVZl0u8yyf6xUA5TJVcmdvnXujxi26fQ6wCJQNT6eccjjKvY2Gld4Gz0lEGWuV3OAOLOZe3qqbSLbrLckaZzaNiF3KUg+7Qp54dwFjfEq7c56xyO8oCVVVLoIoi50AtUxV1OCbNKCyyOqzTJjpAHR2Tp810WAUGFCbO4BwT50wrLLJNgHuqymVqgF90+sSoXzB90qQSa6mjtHC83ergykV3ZaXFMtluGz/BMTxneM4IYj+8eTUB0epiN2bPduTl5HMONz5LT+zCqGovzBreRZoCaHlGsddNmIYrH9u3uUpEkwnfOeEQfU4w2DYXGh6YOs2OIgd9PQZO01UqjDnDTRRpgcfrd+ArGHCS0zRqm+4gr0xxBPzuMg6aq3RXq3uEExuHZDkd7LUFbuY0gahYLICpcLzNYcrJI30bnutwkM45ANFCscLhRikB2v5TnfX7PQurrTOmluQ7OvbWUeb3OipAeyvd0ERZZXEtFBTNjN8OUUtE6Sxoa0S0dbezakGgPBYBVk1NpMPtEx3lTk8sARhRXgnTQQdmA39M5ih/vAuh1TjsIewu97njsrqsEhwbNhogoiKgqvG48a03rpol7RSZtKw20856Ka9pn+NzfILJCrfyHDYQoOkgZVXeMncMrhPZEN2LPaKWFzgE6q6Vk3edaMtVL6qKISCmPF+gWvSAkhM2TTRpObrAVVWjRVVaevX9tcboXGnRBNmI4PiNdBBkgAasBMpATHGZgcS3N42NgtXIdVhLRjqKp4KDUKluyUx8mBJxhIu4hS4rML3IschT5q4mxkjT8RyT6epUCGy64lUh1ipXhw6X4xtB1DxFOdRymXKCSvICZ5nD5fSLMcQ93+UNxNC6aaZcQrhzgafWhCbD74HpAnSKOMHQ43KvVSXvVcT0aIhwoEVlBho6JHpjqKI4EpUEYhNTR23UuPB5tmmTXJUYBjgWACXM8KNNy5d7Cp1xeMsd9HUK5VUiKO49Gg7mspG84pHJg9muDKY8nx/bIOb8UvY83waiMSFWz66i/VyQDJ+7ptLpclurqmLOJuVub7l2DCo9C1wOlz/gYH7uVTQ9ir1GyBqjxYVu0R9jVDWWAXgwY+pVtGyNxeCrGbyRZPBAgkUHTDbxxw/sc5W3VqtNjoWLFztq3D6/t9oJ8dgSR22uZmK9KqJGKSTqolQRljJLCbIV06KNcFW6nT6cDoaT6QD+YNpxx5q3mHOj7MDM6kVIywyIdKuwzoQJUD736t0AF5hU0W2dEasz7SKJ/iPrnFu58qElmlQg+u5Ab6fDjGJTItBWXljlrWaVHWyk2gvnL6pwih31EzFqRDiGkVSwZoSSNXF8lPgiDbPrxf2gDkalo7nkcvxLqkTnAkjB1JK0Qr6CkNrtq+FyAL87B8Z8qOhcyHILqwM5GIKXDfWUcSRX4fRXcDllS6oBH01FH73DTtKoMg64B46OEwuyq5pKEZsEa5MDPgd8k2HO8XmJg53jrmCBQUWZrz0HSF0u1WIfxUG9fIpDvkY82BSgJAQ6qzwuqO8VyRdtn7YF8wSXA6EMxn3/9nmx3mxvT173lc8FFTBAnzjnDuXPTewsXXS/idUvZQBjh71S9cekqS+fMxIZIPMS9fH53LORiFeuL59HepIB5jJ4suZ8ovyZxs4aJmjOI55PaN/Xl/c3dIr68rr0LHYGMEFzvnGNXn2eMR7/7mBnCeX68jmopWwB/R4N/dr3X97FziZG6Wf1z7P6TVw7/Ykx+n8P42mC5jzk+u7q85Ba/sn9r2f1x2vOV65OV5/HTGZ1tPVXMp6kaM6jzr5efW4z3vgHNfXl81w1rGJuorq89n2ej2vqy+d2nmEHXNOnxK4vf36nqS/vy64tU58jjUf/Mxr9k/fDm1j9J7tfvP3VmvryeYPZtewcziXaX6epL59Ly1jE2tdU0MpPk6a+fG5rzS+Y/Ogu3v5ejr5rNVFz3jhrRez+at/n+iGeSVDUl89PFKyITa+2/klGv1xfPu9gYfVXa+jX2rNzCt1Snr+VGtWKqn0frUFhEJTty+fwpEcur//JmvrR8yCrYtOvrZ+mqS/vF69+9OLtyx98L4heUV/et17P6mdcgn89Wfu5Grhcv/gyzr3Heq5e/xhrn+ei5+RmxrA/nZS8U9L5R5r+/ZqL2+/ucervWkvT/rqL1/8/rJo8ILC9AAA='
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)

Submission status: Wrong Answer

Solution code:
import sys
input = sys.stdin.readline

from collections import defaultdict

def DD(arg): return defaultdict(arg)

def int_log(n, a):
  count = 0
  while n>=a:
    n //= a
    count += 1
  return count

H,W = list(map(int,input().split()))
data = [list(map(int, input().split())) for _ in range(H)]

class BIT:
  def __init__(self, logn):
    self.n = 1<<logn
    self.data = [0]*(self.n+1)
    self.el = [0]*(self.n+1)
  def sum(self, i):
    s = 0
    while i > 0:
      s += self.data[i]
      i -= i & -i
    return s
  def add(self, i, x):
    # assert i > 0
    self.el[i] += x
    while i <= self.n:
      self.data[i] += x
      i += i & -i
  def get(self, i, j=None):
    if j is None:
      return self.el[i]
    return self.sum(j) - self.sum(i)
  def bisect(self, x):
    w = i = 0
    k = self.n
    while k:
      if i+k <= self.n and w + self.data[i+k] < x:
        w += self.data[i+k]
        i += k
      k >>= 1
    return i+1

dic = DD(int)
for i in range(W):
  dic[i+1] = i+1

members = DD(int)
for i in range(W):
  members[i+1] = 1

B = BIT(int_log(W,2)+1)
for i in range(W):
  B.add(i+1,1)

def calc_prev_valid(x):
  s = B.sum(x-1)
  if s == 0:
    return 0
  else:
    return B.bisect(s)

count_score = DD(int)
count_score[0] = W
score = 0

for i in range(H):
  a,b = data[i]
  now = b

  while now >= a:
    if B.el[now]:
      count_score[now-dic[now]] -= members[now]
      if not B.el[b+1]:
        dic[b+1] = dic[now]
        B.add(b+1,1)
      if b+1 < W+1:
        count_score[(b+1)-dic[b+1]] += members[now]
      B.add(now,-1)
      members[b+1] += members[now]
      members[now] = 0
    now = calc_prev_valid(now)

  while True:
    if count_score[score]:
      print(score+i+1)
      break
    else:
      score += 1
    if score == W:
      for _ in range(H-i):
        print(-1)
      exit()
  if i == 1500:
    exit()

Submission status: Wrong Answer

Solution code:
import sys
input = sys.stdin.readline

from collections import defaultdict

def DD(arg): return defaultdict(arg)

def int_log(n, a):
  count = 0
  while n>=a:
    n //= a
    count += 1
  return count

H,W = list(map(int,input().split()))
data = [list(map(int, input().split())) for _ in range(H)]

class BIT:
  def __init__(self, logn):
    self.n = 1<<logn
    self.data = [0]*(self.n+1)
    self.el = [0]*(self.n+1)
  def sum(self, i):
    s = 0
    while i > 0:
      s += self.data[i]
      i -= i & -i
    return s
  def add(self, i, x):
    # assert i > 0
    self.el[i] += x
    while i <= self.n:
      self.data[i] += x
      i += i & -i
  def get(self, i, j=None):
    if j is None:
      return self.el[i]
    return self.sum(j) - self.sum(i)
  def bisect(self, x):
    w = i = 0
    k = self.n
    while k:
      if i+k <= self.n and w + self.data[i+k] < x:
        w += self.data[i+k]
        i += k
      k >>= 1
    return i+1

dic = DD(int)
for i in range(W):
  dic[i+1] = i+1

members = DD(int)
for i in range(W):
  members[i+1] = 1

B = BIT(int_log(W,2)+1)
for i in range(W):
  B.add(i+1,1)

def calc_prev_valid(x):
  s = B.sum(x-1)
  if s == 0:
    return -1
  else:
    return B.bisect(s)

count_score = DD(int)
count_score[0] = W
score = 0

for i in range(H):
  a,b = data[i]
  now = b

  while now >= a:
    if B.el[now]:
      count_score[now-dic[now]] -= members[now]
      if not B.el[b+1]:
        dic[b+1] = dic[now]
        B.add(b+1,1)
      if b+1 < W+1:
        count_score[(b+1)-dic[b+1]] += members[now]
      B.add(now,-1)
      members[b+1] += members[now]
      members[now] = 0
    now = calc_prev_valid(now)

  while True:
    if count_score[score]:
      print(score+i+1)
      break
    else:
      score += 1
    if score == W:
      for _ in range(H-i):
        print(-1)
      exit()
  if i == 10**3:
    exit()