n, m = gets.chomp.split(' ').map(&:to_i)
edges = []
1.upto(m) do
  edges << gets.chomp.split(' ').map(&:to_i)
end

# @return Array
def bit_strings(m)
  max_digit = m
  binary_numbers = (0..m**2-1).to_a.map{|m| m.to_s(2)}
  binary_numbers.map do |v|
    offset = max_digit - v.size
    "0" * offset + v
  end
end

# @return Bool
def check_edge(edges, n)
  vertex_cnt = Array.new(n).fill(0)
  edges.each do |e|
    vertex_cnt[e[0] - 1] += 1
  end
  vertex_cnt.count{|v| v.odd?} == 0
end

def convert(edges, b)
  new_edges = []
  b.split('').each_with_index do |v, i|
    if v == "0"
      new_edges[i] = edges[i]
    else
      new_edges[i] = [edges[i][1], edges[i][0]]
    end
  end
  new_edges
end

# @return false
# @return Array
def search(edges, bit_strings, n)
  bit_strings.each do |b|
    new_edges = convert(edges, b)
    return new_edges if check_edge(new_edges, n)
  end
  false
end

result = search(edges, bit_strings(m), n)
if result
  result.each_with_index do |r, i|
    print r[0].to_s + ' ' + r[1].to_s
    print "\n" if i != result.size-1
  end
else
  print -1
end