SequenceT Intersperse(const typename SequenceT::value_type & elem, const SequenceT & sequence) 
{

	if( sequence.size() <= 1 ) return sequence;

	SequenceT newSequence;
	for( const typename SequenceT::value_type & t : sequence ) {
		newSequence.push_back(t);
		newSequence.push_back(elem);
	}

	// Remove the last occurence of elem from the end of the new sequence.
	newSequence.pop_back();

	return newSequence;
}
void print_info(string name, const SequenceT<T> & printMe) {
  cout << "PRINTING " << name << ":" << "which has size(" << printMe.size() << ")"
    << " and cap(" << printMe.capacity() << ")" << endl;
}