#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T POW(T B, T P) {
  if (P == 0) return 1;
  if (P & 1)
    return B * POW(B, P - 1);
  else
    return (POW(B, P / 2)) * (POW(B, P / 2));
}
long long int Bigmod(long long int base, long long int power,
                     long long int mod) {
  if (power == 0) return 1 % mod;
  if (power == 1) return base % mod;
  long long int x = Bigmod(base, power / 2, mod);
  x = (x * x) % mod;
  if (power % 2) {
    x = (x * (base % mod)) % mod;
  }
  return x;
}
long long int Mulmod(long long int base, long long int power,
                     long long int mod) {
  if (power == 0) return 0;
  if (power == 1) return base % mod;
  long long int x = Mulmod(base, power / 2, mod);
  x = (x + x) % mod;
  if (power % 2) {
    x = (x + (base % mod)) % mod;
  }
  return x;
}
long long int BigMulmod(long long int base, long long int power,
                        long long int mod) {
  if (power == 0) return 1 % mod;
  if (power == 1) return base % mod;
  long long int x = BigMulmod(base, power / 2, mod);
  x = Mulmod(x, x, mod);
  if (power % 2) {
    x = Mulmod(x, (base % mod), mod);
  }
  return x;
}
bool isVowel(char ch) {
  ch = toupper(ch);
  if (ch == 'A' || ch == 'U' || ch == 'I' || ch == 'O' || ch == 'E')
    return true;
  return false;
}
long long int ModInverse(long long int number, long long int mod) {
  return Bigmod(number, mod - 2, mod);
}
bool isConso(char ch) {
  if (isalpha(ch) && !isVowel(ch)) return true;
  return false;
}
int toInt(string s) {
  int sm;
  stringstream second(s);
  second >> sm;
  return sm;
}
bool isPrime(long long int val) {
  if (val == 2) return true;
  if (val % 2 == 0 || val == 1) return false;
  long long int sqrt_N = (long long int)((double)sqrt(val));
  for (long long int i = 3; i <= sqrt_N; i += 2) {
    if (val % i == 0) return false;
  }
  return true;
}
template <class T>
string convert(T _input) {
  stringstream blah;
  blah << _input;
  return blah.str();
}
int distchar(char a, char b) {
  int x = ((a - b) + 26) % 26;
  int y = ((b - a) + 26) % 26;
  return min(x, y);
}
bool cmp(int a, int b) { return a > b; }
unsigned long long int Set(unsigned long long int n, int pos) {
  return n = n | (1 << pos);
}
unsigned long long int Unset(unsigned long long int n, int pos) {
  return n = n & ~(1 << pos);
}
bool check(unsigned long long int n, int pos) { return (bool)(n & (1 << pos)); }
long long int frq1[300];
long long int frq2[300];
int main() {
  int a, x, y, p;
  cin >> a >> x >> y;
  p = x;
  x = abs(x);
  y = abs(y);
  double X = (x * 1.0) / a, Y = (y * 1.0) / a;
  int xx = X, yy = Y;
  if (yy > 0 && yy % 2 == 0 && (X == 0.0 || X >= 1.0 || Y == yy))
    printf("-1\n");
  else if ((yy == 0 || yy % 2) && X >= 0.5 || (Y == yy))
    printf("-1\n");
  else {
    int row = (int)((y * 1.0 + a) / a);
    int num = (row % 2 && row > 1) ? (p < 0) ? ((row - 1.0) / 2) * 3
                                             : (((row - 1.0) / 2) * 3) + 1
                                   : (((row - 2.0) / 2) * 3) + 2;
    if (num == 0) num++;
    printf("%d\n", num);
  }
  return 0;
}

### Prompt

Generate a Cpp solution to the following problem:

So nearly half of the winter is over and Maria is dreaming about summer. She's fed up with skates and sleds, she was dreaming about Hopscotch all night long. It's a very popular children's game. The game field, the court, looks as is shown in the figure (all blocks are square and are numbered from bottom to top, blocks in the same row are numbered from left to right). Let us describe the hopscotch with numbers that denote the number of squares in the row, staring from the lowest one: 1-1-2-1-2-1-2-(1-2)..., where then the period is repeated (1-2).

<image>

The coordinate system is defined as shown in the figure. Side of all the squares are equal and have length a.

Maria is a very smart and clever girl, and she is concerned with quite serious issues: if she throws a stone into a point with coordinates (x, y), then will she hit some square? If the answer is positive, you are also required to determine the number of the square.

It is believed that the stone has fallen into the square if it is located strictly inside it. In other words a stone that has fallen on the square border is not considered a to hit a square.

Input

The only input line contains three integers: a, x, y, where a (1 ≤ a ≤ 100) is the side of the square, x and y ( - 106 ≤ x ≤ 106, 0 ≤ y ≤ 106) are coordinates of the stone.

Output

Print the number of the square, inside which the stone fell. If the stone is on a border of some stone or outside the court, print "-1" without the quotes.

Examples

Input

1 0 0


Output

-1


Input

3 1 1


Output

1


Input

3 0 10


Output

5


Input

3 0 7


Output

-1


Input

3 4 0


Output

-1

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T POW(T B, T P) {
  if (P == 0) return 1;
  if (P & 1)
    return B * POW(B, P - 1);
  else
    return (POW(B, P / 2)) * (POW(B, P / 2));
}
long long int Bigmod(long long int base, long long int power,
                     long long int mod) {
  if (power == 0) return 1 % mod;
  if (power == 1) return base % mod;
  long long int x = Bigmod(base, power / 2, mod);
  x = (x * x) % mod;
  if (power % 2) {
    x = (x * (base % mod)) % mod;
  }
  return x;
}
long long int Mulmod(long long int base, long long int power,
                     long long int mod) {
  if (power == 0) return 0;
  if (power == 1) return base % mod;
  long long int x = Mulmod(base, power / 2, mod);
  x = (x + x) % mod;
  if (power % 2) {
    x = (x + (base % mod)) % mod;
  }
  return x;
}
long long int BigMulmod(long long int base, long long int power,
                        long long int mod) {
  if (power == 0) return 1 % mod;
  if (power == 1) return base % mod;
  long long int x = BigMulmod(base, power / 2, mod);
  x = Mulmod(x, x, mod);
  if (power % 2) {
    x = Mulmod(x, (base % mod), mod);
  }
  return x;
}
bool isVowel(char ch) {
  ch = toupper(ch);
  if (ch == 'A' || ch == 'U' || ch == 'I' || ch == 'O' || ch == 'E')
    return true;
  return false;
}
long long int ModInverse(long long int number, long long int mod) {
  return Bigmod(number, mod - 2, mod);
}
bool isConso(char ch) {
  if (isalpha(ch) && !isVowel(ch)) return true;
  return false;
}
int toInt(string s) {
  int sm;
  stringstream second(s);
  second >> sm;
  return sm;
}
bool isPrime(long long int val) {
  if (val == 2) return true;
  if (val % 2 == 0 || val == 1) return false;
  long long int sqrt_N = (long long int)((double)sqrt(val));
  for (long long int i = 3; i <= sqrt_N; i += 2) {
    if (val % i == 0) return false;
  }
  return true;
}
template <class T>
string convert(T _input) {
  stringstream blah;
  blah << _input;
  return blah.str();
}
int distchar(char a, char b) {
  int x = ((a - b) + 26) % 26;
  int y = ((b - a) + 26) % 26;
  return min(x, y);
}
bool cmp(int a, int b) { return a > b; }
unsigned long long int Set(unsigned long long int n, int pos) {
  return n = n | (1 << pos);
}
unsigned long long int Unset(unsigned long long int n, int pos) {
  return n = n & ~(1 << pos);
}
bool check(unsigned long long int n, int pos) { return (bool)(n & (1 << pos)); }
long long int frq1[300];
long long int frq2[300];
int main() {
  int a, x, y, p;
  cin >> a >> x >> y;
  p = x;
  x = abs(x);
  y = abs(y);
  double X = (x * 1.0) / a, Y = (y * 1.0) / a;
  int xx = X, yy = Y;
  if (yy > 0 && yy % 2 == 0 && (X == 0.0 || X >= 1.0 || Y == yy))
    printf("-1\n");
  else if ((yy == 0 || yy % 2) && X >= 0.5 || (Y == yy))
    printf("-1\n");
  else {
    int row = (int)((y * 1.0 + a) / a);
    int num = (row % 2 && row > 1) ? (p < 0) ? ((row - 1.0) / 2) * 3
                                             : (((row - 1.0) / 2) * 3) + 1
                                   : (((row - 2.0) / 2) * 3) + 2;
    if (num == 0) num++;
    printf("%d\n", num);
  }
  return 0;
}

```