#include <map>
#include <utility>
#include <iostream>


int main () {
  std::map<long , int* > v;

  int i,a[10];
  for(i=0; i<10; i++)
  {
    a[i] = i+1;
    v.insert(std::pair<long, int *>(i+1,&a[i]));
  }

  std::map<long, int*>::iterator itr = v.begin();
  while(itr != v.end())
  {
   std::cout << itr->first << " "<<itr->second;
   std::cout << "\n";
   itr++;
  }
  std::map<long, int*, std::greater<long> > rv(v.begin(), v.end());

  std::cout << "copied array: "<<"\n";
  std::map<long, int*, std::greater<long> >::iterator itr2 = rv.begin();
  while(itr2 != rv.end())
  {
    std::cout << itr2->first << " "<<itr2->second;
    std::cout << "\n";
    itr2++;
 }
}