You are given an integer N. Consider all possible segments on the coordinate axis with endpoints at integer points with coordinates between 0 and N, inclusive; there will be <image> of them.

You want to draw these segments in several layers so that in each layer the segments don't overlap (they might touch at the endpoints though). You can not move the segments to a different location on the coordinate axis. 

Find the minimal number of layers you have to use for the given N.

Input

The only input line contains a single integer N (1 ≤ N ≤ 100).

Output

Output a single integer - the minimal number of layers required to draw the segments for the given N.

Examples

Input

2


Output

2


Input

3


Output

4


Input

4


Output

6

Note

As an example, here are the segments and their optimal arrangement into layers for N = 4.

<image>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		OutputWriter out = new OutputWriter(outputStream);
		ProblemFFibonacciStringSubsequences solver = new ProblemFFibonacciStringSubsequences();
		solver.solve(1, in, out);
		out.close();
	}

	static class ProblemFFibonacciStringSubsequences {
		int mod = (int) 1e9 + 7;

		public void solve(int testNumber, InputReader in, OutputWriter out) {
			long to = in.nextInt();
			long from = to % 2;
			long ans = (to + from) * ((to - from) / 2 + 1) / 2;
			out.println(ans);
		}

	}

	static class InputReader {
		public BufferedReader reader;
		public StringTokenizer tokenizer;

		public InputReader(InputStream stream) {
			reader = new BufferedReader(new InputStreamReader(stream), 32768);
			tokenizer = null;
		}

		public String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}

		public int nextInt() {
			return Integer.parseInt(next());
		}

	}

	static class IntegerUtils {
		public static long powMod(long x, long y, int mod) {
			long ret = 1;
			x %= mod;
			while (y > 0) {
				if (y % 2 > 0) {
					ret = ret * x % mod;
				}
				x = x * x % mod;
				y >>= 1;
			}
			return ret;
		}

	}

	static class OutputWriter extends PrintWriter {
		public OutputWriter(OutputStream out) {
			super(out);
		}

		public OutputWriter(Writer out) {
			super(out);
		}

		public void close() {
			super.close();
		}

	}
}