class PriorityQueue:
  def __init__(self):
    self.queue = []

  def is_empty(self):
    return len(self.queue) == 0

  def push(self, task, priority):
    self.queue.append((task, priority))
    # Smallest priority number removed first
    self.queue.sort(key=lambda x: x[1])

  def pop(self):
    if self.is_empty():
      raise IndexError("Priority Queue is empty")
    return self.queue.pop(0)

pq = PriorityQueue()
pq.push("A", 3)
pq.push("B", 2)
pq.push("C", 3)
pq.push("D", 1)
task, priority = pq.pop()
print(task, priority)