text: # Below is the interface for Iterator, which is already defined for you.
  #
  # class Iterator:
  #     def __init__(self, nums):
  #         """
  #         Initializes an iterator object to the beginning of a list.
  #         :type nums: List[int]
  #         """
  #
  #     def hasNext(self):
  #         """
  #         Returns true if the iteration has more elements.
  #         :rtype: bool
  #         """
  #
  #     def next(self):
  #         """
  #         Returns the next element in the iteration.
  #         :rtype: int
  #         """
  
  class PeekingIterator:
      def __init__(self, iterator):
          """
          Initialize your data structure here.
          :type iterator: Iterator
          """
          self.it=iterator
          self.point=[]
          
  
      def peek(self):
          """
          Returns the next element in the iteration without advancing the iterator.
          :rtype: int
          """
          if not len(self.point)>0:
              self.point.append(self.it.next())
              return self.point[0]
          else:
              return self.point[0]
              
  
      def next(self):
          """
          :rtype: int
          """
          if len(self.point)>0:
              return self.point.pop(0)
          else:
              return self.it.next()
          
  
      def hasNext(self):
          """
          :rtype: bool
          """
          if not len(self.point)>0:
              return self.it.hasNext()
          else:
              return True
  
  # Your PeekingIterator object will be instantiated and called as such:
  # iter = PeekingIterator(Iterator(nums))
  # while iter.hasNext():
  #     val = iter.peek()   # Get the next element but not advance the iterator.
  #     iter.next()         # Should return the same value as [val].