Card = Struct.new(:suit, :value) do
  include Comparable

  def <=>(other)
    value <=> other.value
  end

  def to_s
    [suit, value].join(' ')
  end
end

def merge_sort(arr)
  return arr if arr.size <= 1

  mid = arr.size / 2

  arr1 = arr[0...mid]
  arr2 = arr[mid..-1]

  merge(merge_sort(arr1), merge_sort(arr2))
end

def merge(arr1, arr2)
  ret = []

  until arr1.empty? || arr2.empty?
    if arr1.first <= arr2.first
      ret << arr1.shift
    else
      ret << arr2.shift
    end
  end

  unless arr1.empty?
    ret.push(*arr1)
  end

  unless arr2.empty?
    ret.push(*arr2)
  end

  ret
end

def partition(arr, p, r)
  x = arr[r]
  i = p - 1
  p.upto(r - 1) do |j|
    if arr[j] <= x
      i += 1
      arr[i], arr[j] = arr[j], arr[i]
    end
  end
  arr[i + 1], arr[r] = arr[r], arr[i + 1]
  return i + 1
end

def quick_sort(arr, p, r)
  if p < r
    q = partition(arr, p, r)
    quick_sort(arr, p, q - 1)
    quick_sort(arr, q + 1, r)
  end
end

if $PROGRAM_NAME == __FILE__
  n = gets.to_i
  arr1 = []
  arr2 = []

  n.times do
    suit, value = gets.split
    card = Card.new(suit.to_sym, value.to_i)
    arr1 << card
    arr2 << card
  end

  quick_sort(arr1, 0, n - 1)
  merge_sort(arr2)

  stable = true

  n.times do |i|
    if arr1[i].suit != arr2[i].suit
      stable = false
      break
    end
  end

  puts stable ? 'Stable' : 'Not stable'

  arr1.each do |card|
    puts card
  end
end