N = int(eval(input()))

X = []

x = 1

i = 1

while x<10**9+1:

    X.append(x)

    i += 1

    x += i

X.append(x)

    

for i,x in enumerate(X):

    if x < N:

        continue

    else:

        print((i+1))

        break

    
import sys

stdin = sys.stdin



def li(): return [int(x) for x in stdin.readline().split()]

def li_(): return [int(x)-1 for x in stdin.readline().split()]

def lf(): return [float(x) for x in stdin.readline().split()]

def ls(): return stdin.readline().split()

def ns(): return stdin.readline().rstrip()

def lc(): return list(ns())

def ni(): return int(ns())

def nf(): return float(ns())



from itertools import accumulate

from bisect import bisect_left



x = ni()

jump = [i for i in range(1,10**5)]

jump_cum = list(accumulate(jump))

print((bisect_left(jump_cum, x) + 1))
N = int(eval(input()))
X = []
x = 1
i = 1
while x < 10**9 + 1:
    X.append(x)
    i += 1
    x += i
X.append(x)
for i, x in enumerate(X):
    if x < N:
        continue
    else:
        print((i + 1))
        break

import sys

stdin = sys.stdin


def li():
    return [int(x) for x in stdin.readline().split()]


def li_():
    return [int(x) - 1 for x in stdin.readline().split()]


def lf():
    return [float(x) for x in stdin.readline().split()]


def ls():
    return stdin.readline().split()


def ns():
    return stdin.readline().rstrip()


def lc():
    return list(ns())


def ni():
    return int(ns())


def nf():
    return float(ns())


from itertools import accumulate
from bisect import bisect_left

x = ni()
jump = [i for i in range(1, 10**5)]
jump_cum = list(accumulate(jump))
print((bisect_left(jump_cum, x) + 1))

-N = int(eval(input())) -X = [] -x = 1 -i = 1 -while x < 10**9 + 1: -    X.append(x) -    i += 1 -    x += i -X.append(x) -for i, x in enumerate(X): -    if x < N: -        continue -    else: -        print((i + 1)) -        break +import sys + +stdin = sys.stdin + + +def li(): +    return [int(x) for x in stdin.readline().split()] + + +def li_(): +    return [int(x) - 1 for x in stdin.readline().split()] + + +def lf(): +    return [float(x) for x in stdin.readline().split()] + + +def ls(): +    return stdin.readline().split() + + +def ns(): +    return stdin.readline().rstrip() + + +def lc(): +    return list(ns()) + + +def ni(): +    return int(ns()) + + +def nf(): +    return float(ns()) + + +from itertools import accumulate +from bisect import bisect_left + +x = ni() +jump = [i for i in range(1, 10**5)] +jump_cum = list(accumulate(jump)) +print((bisect_left(jump_cum, x) + 1))