Problem: Given an integer x, find 2 integers a and b such that: 

  * 1 ≤ a,b ≤ x 
  * b divides a (a is divisible by b). 
  * a ⋅ b>x. 
  * a/b<x. 

Input

The only line contains the integer x (1 ≤ x ≤ 100).

Output

You should output two integers a and b, satisfying the given conditions, separated by a space. If no pair of integers satisfy the conditions above, print "-1" (without quotes).

Examples

Input

10


Output

6 3

Input

1


Output

-1

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
void Heap(int A[], int n, int l, int r) {
  int x, i, j;
  x = A[l];
  i = l;
  while (1) {
    j = 2 * i;
    if (j > r) break;
    if (j < r && A[j + 1] >= A[j]) j++;
    if (x >= A[j]) break;
    A[i] = A[j];
    i = j;
  }
  A[i] = x;
}
void HeapSort(int A[], int n) {
  int l, r, temp;
  l = n / 2;
  while (l >= 0) {
    Heap(A, n, l, n - 1);
    l--;
  }
  r = n - 1;
  while (r >= 1) {
    temp = A[0];
    A[0] = A[r];
    A[r] = temp;
    r--;
    Heap(A, n, 0, r);
  }
}
int mini(int a, int b, int c) {
  if (a <= b && a <= c)
    return a;
  else if (b <= c && b <= a)
    return b;
  else
    return c;
}
int maxi(int a, int b) {
  if (a > b)
    return a;
  else
    return b;
}
unsigned long long int fac(unsigned long long int a) {
  unsigned long long int r = 1;
  for (int i = 2; i <= a; i++) r *= i;
  return r;
}
bool issimple(unsigned long long n) {
  for (unsigned long long i = 2; i <= sqrt(n); i++)
    if (n % i == 0) return false;
  return true;
}
unsigned long long nod(unsigned long long a, unsigned long long b) {
  unsigned long long temp;
  while (b) {
    a %= b;
    temp = a;
    a = b;
    b = temp;
  }
  return a;
}
unsigned long long nok(unsigned long long a, unsigned long long b,
                       unsigned long long nod) {
  return a / nod * b;
}
int main() {
  int m, t, q, j, i, k, n = 0, count = 0, last, max = -1;
  bool flag = 0, yes = 0;
  int a, b, x;
  cin >> x;
  if (x == 1)
    cout << -1;
  else {
    cout << x << ' ' << x;
  }
  return 0;
}