#include<iostream>
#include <list>
#include <vector>
using namespace std;
template<typename T>
int compare(const T &v1,const T &v2)
{
if(v1 < v2) return -1;
if(v1 > v2) return 1;
return 0;
}
template<typename T,typename U>
T find( T start, T end,const U &value)
{
while(start != end && *start != value)
start++;
return start;
}
template<typename T,unsigned N>
void print(const T (&arry)[N])
{
for(unsigned i = 0;i != N;i++)
cout<<arry[i]<<endl;
}
template<typename T,size_t N>
T* begin(const T (&arry)[N])
{
return &arry[0];
}
#include <list>
#include <vector>
using namespace std;
template<typename T>
int compare(const T &v1,const T &v2)
{
if(v1 < v2) return -1;
if(v1 > v2) return 1;
return 0;
}
template<typename T,typename U>
T find( T start, T end,const U &value)
{
while(start != end && *start != value)
start++;
return start;
}
template<typename T,unsigned N>
void print(const T (&arry)[N])
{
for(unsigned i = 0;i != N;i++)
cout<<arry[i]<<endl;
}
template<typename T,size_t N>
T* begin(const T (&arry)[N])
{
return &arry[0];
}