#include <bits/stdc++.h>
int main(int argc, char** argv) {
  std::cin.tie(0);
  std::ios_base::sync_with_stdio(0);
  int n, m, f[111111], g[111111], h[1111111];
  std::cin >> n;
  std::set<int> set;
  for (int i = 0; i < n; i++) {
    std::cin >> f[i];
    set.insert(f[i]);
  }
  m = set.size();
  int ind = 0;
  for (const auto& i : set) h[ind++] = i;
  for (int i = 0; i < n; i++) g[i] = std::lower_bound(h, h + m, f[i]) - h + 1;
  bool valid = true;
  if (valid)
    for (int i = 0; i < m; i++)
      if (g[h[i] - 1] != i + 1) {
        valid = false;
        break;
      }
  if (valid)
    for (int i = 0; i < n; i++)
      if (h[g[i] - 1] != f[i]) {
        valid = false;
        break;
      }
  if (valid) {
    std::cout << m << std::endl;
    for (int i = 0; i < n; i++) std::cout << g[i] << ' ';
    std::cout << std::endl;
    for (int i = 0; i < m; i++) std::cout << h[i] << ' ';
    std::cout << std::endl;
  } else {
    std::cout << -1 << std::endl;
  }
  return 0;
}
