A few years ago Sajjad left his school and register to another one due to security reasons. Now he wishes to find Amir, one of his schoolmates and good friends.

There are n schools numerated from 1 to n. One can travel between each pair of them, to do so, he needs to buy a ticket. The ticker between schools i and j costs <image> and can be used multiple times. Help Sajjad to find the minimum cost he needs to pay for tickets to visit all schools. He can start and finish in any school.

Input

The first line contains a single integer n (1 ≤ n ≤ 105) — the number of schools.

Output

Print single integer: the minimum cost of tickets needed to visit all schools.

Examples

Input

2


Output

0


Input

10


Output

4

Note

In the first example we can buy a ticket between the schools that costs <image>.
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author Shurikat
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            out.println((n + 1) / 2 - 1);
        }

    }

    static class InputReader implements AutoCloseable {
        private final InputStream in;
        private int capacity;
        private byte[] buffer;
        private int len = 0;
        private int cur = 0;

        public InputReader(InputStream stream) {
            this(stream, 100_000);
        }

        public InputReader(InputStream stream, int capacity) {
            this.in = stream;
            this.capacity = capacity;
            buffer = new byte[capacity];
        }

        private boolean update() {
            if (cur >= len) {
                try {
                    cur = 0;
                    len = in.read(buffer, 0, capacity);
                    if (len <= 0)
                        return false;
                } catch (IOException e) {
                    throw new InputMismatchException();
                }
            }
            return true;
        }

        private int read() {
            if (update())
                return buffer[cur++];
            else return -1;
        }

        private boolean isSpace(int c) {
            return c == '\n' || c == '\t' || c == '\r' || c == ' ';
        }

        private int readSkipSpace() {
            int c;
            do {
                c = read();
            } while (isSpace(c));
            return c;
        }

        public int nextInt() {
            int c = readSkipSpace();
            if (c < 0)
                throw new InputMismatchException();
            int sgn = 1;
            if (c == '-') {
                sgn = -1;
                c = read();
            }
            int res = 0;
            do {
                if (c == -1) break;
                if (c < '0' || c > '9')
                    throw new InputMismatchException();
                res = res * 10 + c - '0';
                if (res < 0)
                    throw new InputMismatchException();
                c = read();
            } while (!isSpace(c));
            res *= sgn;
            return res;
        }


        public void close() throws IOException {
            in.close();
        }

    }
}

