Let's define a split of $n$ as a nonincreasing sequence of positive integers, the sum of which is $n$. 

For example, the following sequences are splits of $8$: $[4, 4]$, $[3, 3, 2]$, $[2, 2, 1, 1, 1, 1]$, $[5, 2, 1]$.

The following sequences aren't splits of $8$: $[1, 7]$, $[5, 4]$, $[11, -3]$, $[1, 1, 4, 1, 1]$.

The weight of a split is the number of elements in the split that are equal to the first element. For example, the weight of the split $[1, 1, 1, 1, 1]$ is $5$, the weight of the split $[5, 5, 3, 3, 3]$ is $2$ and the weight of the split $[9]$ equals $1$.

For a given $n$, find out the number of different weights of its splits.


-----Input-----

The first line contains one integer $n$ ($1 \leq n \leq 10^9$).


-----Output-----

Output one integer — the answer to the problem.


-----Examples-----
Input
7

Output
4

Input
8

Output
5

Input
9

Output
5



-----Note-----

In the first sample, there are following possible weights of splits of $7$:

Weight 1: [$\textbf 7$] 

Weight 2: [$\textbf 3$, $\textbf 3$, 1] 

Weight 3: [$\textbf 2$, $\textbf 2$, $\textbf 2$, 1] 

Weight 7: [$\textbf 1$, $\textbf 1$, $\textbf 1$, $\textbf 1$, $\textbf 1$, $\textbf 1$, $\textbf 1$]

Difficulty: EASY

Solutions:
def do():
	n = int(input())
	print(n // 2 + 1)
do()

def resolve():
	from pprint import pprint
	q = int(input())
	for _ in range(q):
		s = input()
		n = int(input())
		(n, k) = map(int, input().split())
		dat = list(map(int, input().split()))
	dat = [1, 2, 3]
	print(' '.join(list(map(str, res))))
	pass
	import math
	math.ceil(1.2)
	math.floor(1.2)
	round(1.2, 3)


k = int(input())
if k == 1:
	print(1)
elif k % 2:
	print((k + 1) // 2)
else:
	print((k + 2) // 2)


t = int(input())
print(t // 2 + 1)


import atexit
import io
import sys
_INPUT_LINES = sys.stdin.read().splitlines()
input = iter(_INPUT_LINES).__next__
_OUTPUT_BUFFER = io.StringIO()
sys.stdout = _OUTPUT_BUFFER

@atexit.register
def write():
	sys.__stdout__.write(_OUTPUT_BUFFER.getvalue())

def main():
	n = int(input())
	print(n // 2 + 1)

def __starting_point():
	main()
__starting_point()


import sys
import math
n = int(input())
print(n // 2 + 1)


a = int(input())
print(int(a / 2 + 1))


n = int(input())
if n % 2 != 0:
	print((n + 1) // 2)
else:
	print(n // 2 + 1)


n = int(input())
res = 1 + n // 2
print(res)


def Slove():
	n = int(input())
	if n == 1:
		return 1
	return int(n / 2) + 1
print(Slove())


from math import ceil
print(int(int(input()) / 2) + 1)


n = input()
nn = int(n)
print(nn // 2 + 1)


n = eval(input(''))
n = n / 2 + 1
print('%d' % n)


m = int(input())
print(m // 2 + 1)


I = lambda : int(input())
IL = lambda : list(map(int, input().split()))
n = I()
print(n // 2 + 1)


p = int(input())
print(p // 2 + 1)


print(0 - -(int(input()) + 1) // 2)


n = int(input())
print((n >> 1) + 1)


inp = int(input())
if inp == 0:
	print(1)
else:
	print(inp // 2 + 1)


def li():
	return list(map(int, input().split()))
n = int(input())
print(n // 2 + 1)


def a964(n):
	return n // 2 + 1
n = int(input())
print(a964(n))


import math
N = int(input())
if N % 2 == 0:
	print(N // 2 + 1)
else:
	print(math.ceil(N / 2))


import math
n = int(input())
if n == 1:
	print(1)
else:
	print(math.ceil((n + 1) / 2))


def solve(n):
	return n // 2 + 1

def main():
	n = int(input())
	print(solve(n))
main()


a = eval(input())
if a == 1:
	print(1)
else:
	print(a // 2 + 1)


inp = int(input())
print(int(inp / 2) + 1)


n = int(input())
l = []
if n != 1:
	print(n // 2 + 1)
else:
	print(1)


def code3(n):
	print(n // 2 + 1)
code3(int(input()))


import sys
import math
get_string = lambda : sys.stdin.readline().strip()
get_int_list = lambda : list(map(int, sys.stdin.readline().strip().split()))
get_intList_from_str = lambda : list(map(int, list(sys.stdin.readline().strip())))
get_charList_from_str = lambda : list(sys.stdin.readline().strip())
get_char_list = lambda : sys.stdin.readline().strip().split()
get_int = lambda : int(sys.stdin.readline())
pt = lambda x: sys.stdout.write(str(x))
n = get_int()
print(n // 2 + 1)


from collections import deque
import math
import os
import random
import re
import sys

def main():
	n = int(input())
	ans = n // 2 + 1
	print(ans)
main()


n = int(input())
import math
print(math.ceil(n / 2) + (n + 1) % 2)


n = int(input().strip())
split = (n >> 1) + 1
print(split)


from math import *
from collections import *

def inp():
	return map(int, input().split())

def inp_arr():
	return list(map(int, input().split()))
n = int(input())
print(n // 2 + 1)


def main():
	n = int(input())
	print(n // 2 + 1)
main()


var = int(input())
print(var // 2 + 1)


def razbienie(n):
	if n == 1:
		return 1
	return n // 2 + 1
m = int(input())
print(razbienie(m))


import sys
import math
import bisect
import itertools

def main():
	n = int(input())
	ans = n // 2 + 1
	print(ans)
main()


print((int(input()) >> 1) + 1)


n = int(input())
s = n // 2 + 1
print(s)


y = int(input())
if y % 2 == 0:
	s = y / 2 + 1
else:
	s = (y - 1) / 2 + 1
print(int(s))


from sys import stdin, stdout
import cProfile, math
from collections import Counter
printHeap = str()
test = False
memory_constrained = False

def display(string_to_print):
	stdout.write(str(string_to_print) + '\n')

def test_print(output):
	if test:
		stdout.write(str(output) + '\n')

def display_list(list1, sep=' '):
	stdout.write(sep.join(map(str, list1)) + '\n')

def get_int():
	return int(stdin.readline().strip())

def get_tuple():
	return map(int, stdin.readline().split())

def get_list():
	return list(map(int, stdin.readline().split()))
memory = dict()

def clear_cache():
	global memory
	memory = dict()

def cached_fn(fn, *args):
	global memory
	if args in memory:
		return memory[args]
	else:
		result = fn(*args)
		memory[args] = result
		return result

def main():
	n = get_int()
	print(n // 2 + 1)
cProfile.run('main()') if test else main()


n = int(input())
a = n // 2 + 1
b = 1
c = 1
print(a)


num = int(input())
if num % 2 == 0:
	print(int((num + 2) / 2))
else:
	print(int((num + 1) / 2))


import sys
input = sys.stdin.readline
n = int(input())
print(n // 2 + 1)


def solution(n):
	return int(n / 2) + 1

def answer():
	n = int(input())
	print(solution(n))
answer()


import math, itertools, fractions, heapq, collections, bisect, sys, queue, copy
sys.setrecursionlimit(10 ** 7)
inf = 10 ** 20
mod = 10 ** 9 + 7
dd = [(-1, 0), (0, 1), (1, 0), (0, -1)]
ddn = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]

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

def I():
	return int(sys.stdin.readline())

def F():
	return float(sys.stdin.readline())

def LS():
	return sys.stdin.readline().split()

def S():
	return input()

def main():
	n = I()
	return n // 2 + 1
print(main())


print((int(input()) + 2) // 2)


n = int(input())
if n == 1:
	print(1)
elif n == 2:
	print(2)
else:
	print(n // 2 + 1)


alph = 'abcdefghijklmnopqrstuvwxyz'
n = int(input())
print(n // 2 + 1)


a = 1
b = 2
c = 3
d = 5
q = 2
n = int(input())
print(int(n / 2 + 1))


exit(print(int(input()) // 2 + 1))


while True:
	try:
		n = int(input())
	except:
		break
	print(n // 2 + 1)


import math
n = int(input())
if n % 2 == 0:
	print(n // 2 + 1)
if n % 2 != 0:
	print(math.ceil(n / 2))


from sys import stdin, stdout

def rint():
	return map(int, stdin.readline().split())
n = int(input())
print(n // 2 + 1)


n = int(input())
(low, high) = (1, n)
while low < high - 1:
	mid = (low + high) // 2
	if n // mid > 1:
		low = mid
	else:
		high = mid
print(high)


integer = int(input())
print(integer // 2 + 1)


t = int(input())
if t % 2 == 0:
	print(t // 2 + 1)
else:
	print((t + 1) // 2)