This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

c++/4147: g++ 3.0.1 internal error with STL



>Number:         4147
>Category:       c++
>Synopsis:       GCC reports internal error in expand_function_start
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Mon Aug 27 12:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     
>Release:        3.0.1
>Organization:
New Brunswick Computing Services
>Environment:
System: SunOS radiohead.Rutgers.EDU 5.8 Generic_108528-07 sun4u sparc SUNW,Sun-Blade-100
Architecture: sun4

	
host: sparcv9-sun-solaris2.8
build: sparcv9-sun-solaris2.8
target: sparcv9-sun-solaris2.8
configured with: ../configure --prefix=/usr/local/gcc-3.0.1 --enable-shared --enable-threads sparcv9-sun-solaris2.8
>Description:
When compiling test.cpp (included below) g++ -v gives the following output:
Reading specs from /usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/specs
Configured with: ../configure --prefix=/usr/local/gcc-3.0.1 --enable-shared --enable-threads sparcv9-sun-solaris2.8
Thread model: posix
gcc version 3.0.1
 /usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/cpp0 -lang-c++ -D__GNUG__=3 -D__GXX_DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=1 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem=unix -Asystem=svr4 -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_XOPEN_SOURCE=500 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D__EXTENSIONS__ -D__SIZE_TYPE__=long unsigned int -D__PTRDIFF_TYPE__=long int -D__WCHAR_TYPE__=int -D__WINT_TYPE__=int -D__arch64__ -Acpu=sparc64 -Amachine=sparcv9 -D__sparcv9 test.cpp test.ii
GNU CPP version 3.0.1 (cpplib) (sparc)
ignoring nonexistent directory "/usr/local/gcc-3.0.1/sparcv9-sun-solaris2.8/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/gcc-3.0.1/include/g++-v3
 /usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8
 /usr/local/gcc-3.0.1/include/g++-v3/backward
 /usr/local/gcc-3.0.1/include
 /usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include
 /usr/include
End of search list.
 /usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/cc1plus -fpreprocessed test.ii -quiet -dumpbase test.cpp -version -o test.s
GNU CPP version 3.0.1 (cpplib) (sparc)
GNU C++ version 3.0.1 (sparcv9-sun-solaris2.8)
        compiled by GNU C version 2.95.3 20010315 (release).
/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algo.h: In function 
   `_RandomAccessIter std::__unguarded_partition(_RandomAccessIter, 
   _RandomAccessIter, _Tp) [with _RandomAccessIter = 
   std::__normal_iterator<std::pair<int, std::string>*, 
   std::vector<std::pair<int, std::string>, std::allocator<std::pair<int, 
   std::string> > > >, _Tp = std::pair<int, std::string>]':
/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algo.h:1634:   instantiated from `void std::__introsort_loop(_RandomAccessIter, _RandomAccessIter, _Tp*, _Size) [with _RandomAccessIter = std::__normal_iterator<std::pair<int, std::string>*, std::vector<std::pair<int, std::string>, std::allocator<std::pair<int, std::string> > > >, _Tp = std::pair<int, std::string>, _Size = long int]'
/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algo.h:1672:   instantiated from `void std::sort(_RandomAccessIter, _RandomAccessIter) [with _RandomAccessIter = std::__normal_iterator<std::pair<int, std::string>*, std::vector<std::pair<int, std::string>, std::allocator<std::pair<int, std::string> > > >]'
test.cpp:33:   instantiated from here
/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algo.h:1449: Internal compiler 
   error in expand_function_start, at function.c:6424
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

>How-To-Repeat:
Here is the preprocessed source:

# 1 "test.cpp"
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/vector" 1 3
# 31 "/usr/local/gcc-3.0.1/include/g++-v3/vector" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_vector.h" 1 3
# 60 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_vector.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/functexcept.h" 1 3
# 34 "/usr/local/gcc-3.0.1/include/g++-v3/bits/functexcept.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/exception_defines.h" 1 3
# 35 "/usr/local/gcc-3.0.1/include/g++-v3/bits/functexcept.h" 2 3

namespace std
{

  void
  __throw_bad_exception(void);


  void
  __throw_bad_alloc(void);


  void
  __throw_bad_cast(void);

  void
  __throw_bad_typeid(void);


  void
  __throw_logic_error(const char* __s);

  void
  __throw_domain_error(const char* __s);

  void
  __throw_invalid_argument(const char* __s);

  void
  __throw_length_error(const char* __s);

  void
  __throw_out_of_range(const char* __s);

  void
  __throw_runtime_error(const char* __s);

  void
  __throw_range_error(const char* __s);

  void
  __throw_overflow_error(const char* __s);

  void
  __throw_underflow_error(const char* __s);


  void
  __throw_ios_failure(const char* __s);
}
# 62 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_vector.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 1 3
# 64 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 34 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/os_defines.h" 1 3
# 35 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 2 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/limits.h" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 2 3
# 65 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_pair.h" 1 3
# 64 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_pair.h" 3
namespace std
{


template <class _T1, class _T2>
struct pair {
  typedef _T1 first_type;
  typedef _T2 second_type;

  _T1 first;
  _T2 second;




  pair() : first(), second() {}




  pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {}


  template <class _U1, class _U2>
  pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}
};


template <class _T1, class _T2>
inline bool operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
{
  return __x.first == __y.first && __x.second == __y.second;
}


template <class _T1, class _T2>
inline bool operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
{
  return __x.first < __y.first ||
         (!(__y.first < __x.first) && __x.second < __y.second);
}


template <class _T1, class _T2>
inline bool operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
  return !(__x == __y);
}


template <class _T1, class _T2>
inline bool operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
  return __y < __x;
}


template <class _T1, class _T2>
inline bool operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
  return !(__y < __x);
}


template <class _T1, class _T2>
inline bool operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
  return !(__x < __y);
}
# 139 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_pair.h" 3
template <class _T1, class _T2>


inline pair<_T1, _T2> make_pair(_T1 __x, _T2 __y)



{
  return pair<_T1, _T2>(__x, __y);
}

}
# 67 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3


# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 1 3
# 48 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 50 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 2 3
# 86 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 3
template <bool _Truth> struct _Bool {};
typedef _Bool<true> __true_type;
typedef _Bool<false> __false_type;

template <class _Tp>
struct __type_traits {
   typedef __true_type this_dummy_member_must_be_first;
# 110 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 3
   typedef __false_type has_trivial_default_constructor;
   typedef __false_type has_trivial_copy_constructor;
   typedef __false_type has_trivial_assignment_operator;
   typedef __false_type has_trivial_destructor;
   typedef __false_type is_POD_type;
};




template<> struct __type_traits<bool> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<char> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<signed char> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<unsigned char> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<wchar_t> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<short> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<unsigned short> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<int> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<unsigned int> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<long> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<unsigned long> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};
# 228 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 3
template<> struct __type_traits<float> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<double> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template<> struct __type_traits<long double> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};

template <class _Tp>
struct __type_traits<_Tp*> {
   typedef __true_type has_trivial_default_constructor;
   typedef __true_type has_trivial_copy_constructor;
   typedef __true_type has_trivial_assignment_operator;
   typedef __true_type has_trivial_destructor;
   typedef __true_type is_POD_type;
};





template <class _Tp> struct _Is_integer {
  typedef __false_type _Integral;
};

template<> struct _Is_integer<bool> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<char> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<signed char> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<unsigned char> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<wchar_t> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<short> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<unsigned short> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<int> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<unsigned int> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<long> {
  typedef __true_type _Integral;
};

template<> struct _Is_integer<unsigned long> {
  typedef __true_type _Integral;
};
# 325 "/usr/local/gcc-3.0.1/include/g++-v3/bits/type_traits.h" 3
template<typename _Tp> struct _Is_normal_iterator {
   typedef __false_type _Normal;
};


namespace std {
   template<typename _Iterator, typename _Container> class __normal_iterator;
};

template<typename _Iterator, typename _Container>
struct _Is_normal_iterator< std::__normal_iterator<_Iterator, _Container> > {
   typedef __true_type _Normal;
};
# 70 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstring.h" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstring.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 3
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stddef.h" 1 3 4
# 147 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stddef.h" 3 4
typedef long int ptrdiff_t;
# 199 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 39 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 2 3

namespace std
{
  using ::ptrdiff_t;
  using ::size_t;
}
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstring.h" 2 3
# 40 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstring.h" 3
# 1 "/usr/include/string.h" 1 3 4
# 16 "/usr/include/string.h" 3 4
#pragma ident "@(#)string.h	1.24	99/08/10 SMI"

# 1 "/usr/include/iso/string_iso.h" 1 3 4
# 28 "/usr/include/iso/string_iso.h" 3 4
#pragma ident "@(#)string_iso.h	1.2	99/11/09 SMI"


# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 13 "/usr/include/sys/feature_tests.h" 3 4
#pragma ident "@(#)feature_tests.h	1.18	99/07/26 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 9 "/usr/include/sys/isa_defs.h" 3 4
#pragma ident "@(#)isa_defs.h	1.20	99/05/04 SMI"
# 158 "/usr/include/sys/isa_defs.h" 3 4
extern "C" {
# 380 "/usr/include/sys/isa_defs.h" 3 4
}
# 16 "/usr/include/sys/feature_tests.h" 2 3 4


extern "C" {
# 181 "/usr/include/sys/feature_tests.h" 3 4
}
# 32 "/usr/include/iso/string_iso.h" 2 3 4


extern "C" {
# 60 "/usr/include/iso/string_iso.h" 3 4
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
# 112 "/usr/include/iso/string_iso.h" 3 4
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
# 151 "/usr/include/iso/string_iso.h" 3 4
}
# 19 "/usr/include/string.h" 2 3 4
# 51 "/usr/include/string.h" 3 4
extern "C" {






extern char *strtok_r(char *, const char *, char **);




extern void *memccpy(void *, const void *, int, size_t);




extern char *strsignal(int);
extern int ffs(int);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);





extern char *strdup(const char *);
# 113 "/usr/include/string.h" 3 4
}
# 41 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstring.h" 2 3
# 66 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstring.h" 3
namespace std
{
  using ::memcpy;
  using ::memmove;
  using ::strcpy;
  using ::strncpy;
  using ::strcat;
  using ::strncat;
  using ::memcmp;
  using ::strcmp;
  using ::strcoll;
  using ::strncmp;
  using ::strxfrm;
  using ::strcspn;
  using ::strspn;
  using ::strtok;
  using ::memset;
  using ::strerror;
  using ::strlen;

  using ::memchr;

  inline void*
  memchr(void* __p, int __c, size_t __n)
  { return memchr(const_cast<const void*>(__p), __c, __n); }

  using ::strchr;

  inline char*
  strchr(char* __s1, int __n)
  { return __builtin_strchr(const_cast<const char*>(__s1), __n); }

  using ::strpbrk;

  inline char*
  strpbrk(char* __s1, const char* __s2)
  { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); }

  using ::strrchr;

  inline char*
  strrchr(char* __s1, int __n)
  { return __builtin_strrchr(const_cast<const char*>(__s1), __n); }

  using ::strstr;

  inline char*
  strstr(char* __s1, const char* __s2)
  { return __builtin_strstr(const_cast<const char*>(__s1), __s2); }
}
# 72 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_climits.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_climits.h" 3
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/limits.h" 1 3 4
# 11 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/limits.h" 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 1 3 4
# 25 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 3 4
#pragma ident "@(#)limits.h	1.51	99/10/08 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 28 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 2 3 4
# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 29 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 2 3 4
# 1 "/usr/include/iso/limits_iso.h" 1 3 4
# 28 "/usr/include/iso/limits_iso.h" 3 4
#pragma ident "@(#)limits_iso.h	1.1	99/08/09 SMI"


extern "C" {
# 75 "/usr/include/iso/limits_iso.h" 3 4
}
# 30 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 2 3 4
# 41 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 3 4
# 1 "/usr/include/sys/int_limits.h" 1 3 4
# 9 "/usr/include/sys/int_limits.h" 3 4
#pragma ident "@(#)int_limits.h	1.6	99/08/06 SMI"
# 44 "/usr/include/sys/int_limits.h" 3 4
# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 45 "/usr/include/sys/int_limits.h" 2 3 4


extern "C" {
# 162 "/usr/include/sys/int_limits.h" 3 4
}
# 42 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 2 3 4



extern "C" {
# 243 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 3 4
typedef long clock_t;


extern long _sysconf(int);
# 268 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 3 4
# 1 "/usr/include/sys/unistd.h" 1 3 4
# 25 "/usr/include/sys/unistd.h" 3 4
#pragma ident "@(#)unistd.h	1.37	98/10/28 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 28 "/usr/include/sys/unistd.h" 2 3 4


extern "C" {
# 265 "/usr/include/sys/unistd.h" 3 4
}
# 269 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 2 3 4
# 279 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 3 4
extern long _sysconf(int);
# 289 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/syslimits.h" 3 4
}
# 12 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/limits.h" 2 3 4
# 39 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_climits.h" 2 3
# 73 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 1 3
# 39 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 2 3
# 41 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 3
# 1 "/usr/include/stdlib.h" 1 3 4
# 16 "/usr/include/stdlib.h" 3 4
#pragma ident "@(#)stdlib.h	1.47	99/11/03 SMI"

# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/stdlib_iso.h" 1 3 4
# 37 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/stdlib_iso.h" 3 4
#pragma ident "@(#)stdlib_iso.h	1.2	99/12/21 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 40 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/stdlib_iso.h" 2 3 4


extern "C" {



extern unsigned char __ctype[];
# 57 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/stdlib_iso.h" 3 4
typedef struct {
        int quot;
        int rem;
} div_t;

typedef struct {
        long quot;
        long rem;
} ldiv_t;
# 103 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/stdlib_iso.h" 3 4
extern void abort(void);
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
        int (*)(const void *, const void *));
extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int);
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern void qsort(void *, size_t, size_t,
        int (*)(const void *, const void *));
extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
# 172 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/stdlib_iso.h" 3 4
}
# 19 "/usr/include/stdlib.h" 2 3 4



# 1 "/usr/include/sys/wait.h" 1 3 4
# 16 "/usr/include/sys/wait.h" 3 4
#pragma ident "@(#)wait.h	1.21	97/04/08 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 19 "/usr/include/sys/wait.h" 2 3 4

# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 25 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
#pragma ident "@(#)types.h	1.66	00/02/14 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 28 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 29 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 2 3 4




# 1 "/usr/include/sys/machtypes.h" 1 3 4
# 16 "/usr/include/sys/machtypes.h" 3 4
#pragma ident "@(#)machtypes.h	1.13	99/05/04 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 19 "/usr/include/sys/machtypes.h" 2 3 4


extern "C" {
# 33 "/usr/include/sys/machtypes.h" 3 4
typedef struct _label_t { long val[2]; } label_t;



typedef unsigned char lock_t;


}
# 34 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 2 3 4
# 45 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
# 1 "/usr/include/sys/int_types.h" 1 3 4
# 9 "/usr/include/sys/int_types.h" 3 4
#pragma ident "@(#)int_types.h	1.6	97/08/20 SMI"
# 42 "/usr/include/sys/int_types.h" 3 4
# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 43 "/usr/include/sys/int_types.h" 2 3 4


extern "C" {
# 62 "/usr/include/sys/int_types.h" 3 4
typedef char int8_t;





typedef short int16_t;
typedef int int32_t;

typedef long int64_t;






typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;

typedef unsigned long uint64_t;
# 94 "/usr/include/sys/int_types.h" 3 4
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
# 107 "/usr/include/sys/int_types.h" 3 4
typedef long intptr_t;
typedef unsigned long uintptr_t;
# 119 "/usr/include/sys/int_types.h" 3 4
typedef char int_least8_t;





typedef short int_least16_t;
typedef int int_least32_t;

typedef long int_least64_t;






typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;

typedef unsigned long uint_least64_t;







}
# 46 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 2 3 4







extern "C" {
# 62 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
# 82 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef int32_t t_scalar_t;
typedef uint32_t t_uscalar_t;
# 92 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;

typedef char *caddr_t;
typedef long daddr_t;
typedef short cnt_t;
# 127 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef ulong_t pfn_t;
typedef ulong_t pgcnt_t;
typedef long spgcnt_t;

typedef uchar_t use_t;
typedef short sysid_t;
typedef short index_t;
typedef void *timeout_id_t;
typedef void *bufcall_id_t;
# 149 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef long off_t;






typedef off_t off64_t;
# 165 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef ulong_t ino_t;
typedef long blkcnt_t;
typedef ulong_t fsblkcnt_t;
typedef ulong_t fsfilcnt_t;
# 178 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef ino_t ino64_t;
typedef blkcnt_t blkcnt64_t;
typedef fsblkcnt_t fsblkcnt64_t;
typedef fsfilcnt_t fsfilcnt64_t;
# 191 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef int blksize_t;





typedef enum { _B_FALSE, _B_TRUE } boolean_t;
# 210 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef int64_t pad64_t;
typedef uint64_t upad64_t;
# 223 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef longlong_t diskaddr_t;
# 244 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef union {
        offset_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lloff_t;
# 264 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef union {
        diskaddr_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lldaddr_t;


typedef uint_t k_fltset_t;
# 285 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef int id_t;
# 294 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef uint_t useconds_t;



typedef long suseconds_t;






typedef uint_t major_t;
typedef uint_t minor_t;
# 315 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef short pri_t;
# 328 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef ushort_t o_mode_t;
typedef short o_dev_t;
typedef ushort_t o_uid_t;
typedef o_uid_t o_gid_t;
typedef short o_nlink_t;
typedef short o_pid_t;
typedef ushort_t o_ino_t;





typedef int key_t;

typedef uint_t mode_t;







typedef int uid_t;





typedef uid_t gid_t;

typedef id_t taskid_t;
typedef id_t projid_t;






typedef unsigned int pthread_t;
typedef unsigned int pthread_key_t;

typedef struct _pthread_mutex {
        struct {
                uint16_t __pthread_mutex_flag1;
                uint8_t __pthread_mutex_flag2;
                uint8_t __pthread_mutex_ceiling;
                uint32_t __pthread_mutex_type;
        } __pthread_mutex_flags;
        union {
                struct {
                        uint8_t __pthread_mutex_pad[8];
                } __pthread_mutex_lock64;
                upad64_t __pthread_mutex_owner64;
        } __pthread_mutex_lock;
        upad64_t __pthread_mutex_data;
} pthread_mutex_t;

typedef struct _pthread_cond {
        struct {
                uint8_t __pthread_cond_flag[4];
                uint32_t __pthread_cond_type;
        } __pthread_cond_flags;
        upad64_t __pthread_cond_data;
} pthread_cond_t;




typedef struct _pthread_rwlock {
        int32_t __pthread_rwlock_readers;
        uint16_t __pthread_rwlock_type;
        uint16_t __pthread_rwlock_magic;
        upad64_t __pthread_rwlock_pad1[3];
        upad64_t __pthread_rwlock_pad2[2];
        upad64_t __pthread_rwlock_pad3[2];
} pthread_rwlock_t;




typedef struct _pthread_attr {
        void *__pthread_attrp;
} pthread_attr_t;





typedef struct _pthread_mutexattr {
        void *__pthread_mutexattrp;
} pthread_mutexattr_t;





typedef struct _pthread_condattr {
        void *__pthread_condattrp;
} pthread_condattr_t;




typedef struct _once {
        upad64_t __pthread_once_pad[4];
} pthread_once_t;





typedef struct _pthread_rwlockattr {
        void *__pthread_rwlockattrp;
} pthread_rwlockattr_t;

typedef ulong_t dev_t;


typedef uint_t nlink_t;
typedef int pid_t;
# 473 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef long ssize_t;







typedef long time_t;
# 491 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef int clockid_t;




typedef int timer_t;






typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 557 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef struct _quad { int val[2]; } quad_t;
typedef quad_t quad;






# 1 "/usr/include/sys/select.h" 1 3 4
# 12 "/usr/include/sys/select.h" 3 4
#pragma ident "@(#)select.h	1.16	98/04/27 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 15 "/usr/include/sys/select.h" 2 3 4


# 1 "/usr/include/sys/time.h" 1 3 4
# 22 "/usr/include/sys/time.h" 3 4
#pragma ident "@(#)time.h	2.66	01/01/17 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 25 "/usr/include/sys/time.h" 2 3 4







extern "C" {
# 49 "/usr/include/sys/time.h" 3 4
struct timeval {
        time_t tv_sec;
        suseconds_t tv_usec;
};
# 82 "/usr/include/sys/time.h" 3 4
struct timezone {
        int tz_minuteswest;
        int tz_dsttime;
};





}
# 100 "/usr/include/sys/time.h" 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 101 "/usr/include/sys/time.h" 2 3 4



extern "C" {
# 155 "/usr/include/sys/time.h" 3 4
struct itimerval {
        struct timeval it_interval;
        struct timeval it_value;
};
# 203 "/usr/include/sys/time.h" 3 4
typedef longlong_t hrtime_t;
# 320 "/usr/include/sys/time.h" 3 4
int adjtime(struct timeval *, struct timeval *);
# 331 "/usr/include/sys/time.h" 3 4
int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);

int setitimer(int, const struct itimerval *, struct itimerval *);
# 369 "/usr/include/sys/time.h" 3 4
int settimeofday(struct timeval *, void *);

hrtime_t gethrtime(void);
hrtime_t gethrvtime(void);
# 389 "/usr/include/sys/time.h" 3 4
int gettimeofday(struct timeval *, void *);
# 410 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 16 "/usr/include/time.h" 3 4
#pragma ident "@(#)time.h	1.39	99/08/10 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 19 "/usr/include/time.h" 2 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 20 "/usr/include/time.h" 2 3 4
# 1 "/usr/include/iso/time_iso.h" 1 3 4
# 28 "/usr/include/iso/time_iso.h" 3 4
#pragma ident "@(#)time_iso.h	1.1	99/08/09 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 31 "/usr/include/iso/time_iso.h" 2 3 4


extern "C" {
# 69 "/usr/include/iso/time_iso.h" 3 4
struct tm {
        int tm_sec;
        int tm_min;
        int tm_hour;
        int tm_mday;
        int tm_mon;
        int tm_year;
        int tm_wday;
        int tm_yday;
        int tm_isdst;
};




extern char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);
# 113 "/usr/include/iso/time_iso.h" 3 4
}
# 21 "/usr/include/time.h" 2 3 4
# 43 "/usr/include/time.h" 3 4
extern "C" {
# 60 "/usr/include/time.h" 3 4
extern struct tm *gmtime_r(const time_t *, struct tm *);
extern struct tm *localtime_r(const time_t *, struct tm *);





extern char *strptime(const char *, const char *, struct tm *);
# 83 "/usr/include/time.h" 3 4
# 1 "/usr/include/sys/time_impl.h" 1 3 4
# 15 "/usr/include/sys/time_impl.h" 3 4
#pragma ident "@(#)time_impl.h	1.5	99/10/05 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 18 "/usr/include/sys/time_impl.h" 2 3 4


extern "C" {
# 36 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec {
        time_t tv_sec;
        long tv_nsec;
} timespec_t;
# 60 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec timestruc_t;
# 79 "/usr/include/sys/time_impl.h" 3 4
typedef struct itimerspec {
        struct timespec it_interval;
        struct timespec it_value;
} itimerspec_t;
# 136 "/usr/include/sys/time_impl.h" 3 4
}
# 84 "/usr/include/time.h" 2 3 4
# 98 "/usr/include/time.h" 3 4
union sigval {
        int sival_int;
        void *sival_ptr;
};




struct sigevent {
        int sigev_notify;
        int sigev_signo;
        union sigval sigev_value;
        void (*sigev_notify_function)(union sigval);
        pthread_attr_t *sigev_notify_attributes;
        int __sigev_pad2;
};


extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);
extern int timer_create(clockid_t, struct sigevent *, timer_t *);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *,
                struct itimerspec *);
extern int nanosleep(const struct timespec *, struct timespec *);




extern void tzset(void);

extern char *tzname[2];
# 142 "/usr/include/time.h" 3 4
extern long timezone;
extern int daylight;
# 156 "/usr/include/time.h" 3 4
extern struct tm *getdate(const char *);






extern int getdate_err;
# 256 "/usr/include/time.h" 3 4
static char *
asctime_r(const struct tm *__tm, char *__buf)
{
        extern char *__posix_asctime_r(const struct tm *, char *);
        return (__posix_asctime_r(__tm, __buf));
}
static char *
ctime_r(const time_t *__time, char *__buf)
{
        extern char *__posix_ctime_r(const time_t *, char *);
        return (__posix_ctime_r(__time, __buf));
}
# 318 "/usr/include/time.h" 3 4
}
# 411 "/usr/include/sys/time.h" 2 3 4
# 423 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 424 "/usr/include/sys/time.h" 2 3 4





}
# 18 "/usr/include/sys/select.h" 2 3 4



extern "C" {
# 45 "/usr/include/sys/select.h" 3 4
typedef long fd_mask;

typedef long fds_mask;
# 73 "/usr/include/sys/select.h" 3 4
typedef struct fd_set {



        long fds_bits[(((65536)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
} fd_set;
# 97 "/usr/include/sys/select.h" 3 4
extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);






}
# 570 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 2 3 4
# 586 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 3 4
}
# 21 "/usr/include/sys/wait.h" 2 3 4



# 1 "/usr/include/sys/resource.h" 1 3 4
# 16 "/usr/include/sys/resource.h" 3 4
#pragma ident "@(#)resource.h	1.25	98/06/30 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 19 "/usr/include/sys/resource.h" 2 3 4

# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 21 "/usr/include/sys/resource.h" 2 3 4
# 1 "/usr/include/sys/time.h" 1 3 4
# 22 "/usr/include/sys/resource.h" 2 3 4


extern "C" {
# 53 "/usr/include/sys/resource.h" 3 4
typedef unsigned long rlim_t;
# 102 "/usr/include/sys/resource.h" 3 4
struct rlimit {
        rlim_t rlim_cur;
        rlim_t rlim_max;
};




typedef u_longlong_t rlim64_t;





struct rlimit64 {
        rlim64_t rlim_cur;
        rlim64_t rlim_max;
};
# 143 "/usr/include/sys/resource.h" 3 4
struct rusage {
        struct timeval ru_utime;
        struct timeval ru_stime;
        long ru_maxrss;
        long ru_ixrss;
        long ru_idrss;
        long ru_isrss;
        long ru_minflt;
        long ru_majflt;
        long ru_nswap;
        long ru_inblock;
        long ru_oublock;
        long ru_msgsnd;
        long ru_msgrcv;
        long ru_nsignals;
        long ru_nvcsw;
        long ru_nivcsw;
};
# 193 "/usr/include/sys/resource.h" 3 4
extern int setrlimit(int, const struct rlimit *);
extern int getrlimit(int, struct rlimit *);
# 203 "/usr/include/sys/resource.h" 3 4
extern int getpriority(int, id_t);
extern int setpriority(int, id_t, int);
extern int getrusage(int, struct rusage *);
# 228 "/usr/include/sys/resource.h" 3 4
}
# 25 "/usr/include/sys/wait.h" 2 3 4
# 1 "/usr/include/sys/siginfo.h" 1 3 4
# 16 "/usr/include/sys/siginfo.h" 3 4
#pragma ident "@(#)siginfo.h	1.54	98/03/27 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 19 "/usr/include/sys/siginfo.h" 2 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 20 "/usr/include/sys/siginfo.h" 2 3 4


extern "C" {
# 126 "/usr/include/sys/siginfo.h" 3 4
# 1 "/usr/include/sys/machsig.h" 1 3 4
# 16 "/usr/include/sys/machsig.h" 3 4
#pragma ident "@(#)machsig.h	1.15	99/08/15 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 19 "/usr/include/sys/machsig.h" 2 3 4


extern "C" {
# 107 "/usr/include/sys/machsig.h" 3 4
}
# 127 "/usr/include/sys/siginfo.h" 2 3 4
# 206 "/usr/include/sys/siginfo.h" 3 4
# 1 "/usr/include/sys/time_impl.h" 1 3 4
# 207 "/usr/include/sys/siginfo.h" 2 3 4
# 217 "/usr/include/sys/siginfo.h" 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 218 "/usr/include/sys/siginfo.h" 2 3 4



typedef struct siginfo {



        int si_signo;
        int si_code;
        int si_errno;

        int si_pad;

        union {

                int __pad[((256 / sizeof (int)) - 4)];

                struct {
                        pid_t __pid;
                        union {
                                struct {
                                        uid_t __uid;


                                        union sigval __value;



                                } __kill;
                                struct {
                                        clock_t __utime;
                                        int __status;
                                        clock_t __stime;
                                } __cld;
                        } __pdata;
                } __proc;

                struct {
                        void *__addr;
                        int __trapno;
                        caddr_t __pc;
                } __fault;

                struct {

                        int __fd;
                        long __band;
                } __file;

                struct {
                        caddr_t __faddr;


                        timestruc_t __tstamp;



                        short __syscall;
                        char __nsysarg;
                        char __fault;
                        long __sysarg[8];
                        int __mstate[10];
                } __prof;

        } __data;

} siginfo_t;
# 354 "/usr/include/sys/siginfo.h" 3 4
typedef struct k_siginfo {
        int si_signo;
        int si_code;
        int si_errno;

        int si_pad;

        union {
                struct {
                        pid_t __pid;
                        union {
                                struct {
                                        uid_t __uid;
                                        union sigval __value;
                                } __kill;
                                struct {
                                        clock_t __utime;
                                        int __status;
                                        clock_t __stime;
                                } __cld;
                        } __pdata;
                } __proc;

                struct {
                        void *__addr;
                        int __trapno;
                        caddr_t __pc;
                } __fault;

                struct {

                        int __fd;
                        long __band;
                } __file;

                struct {
                        caddr_t __faddr;



                        timestruc_t __tstamp;



                        short __syscall;
                        char __nsysarg;
                        char __fault;



                } __prof;

        } __data;

} k_siginfo_t;

typedef struct sigqueue {
        struct sigqueue *sq_next;
        k_siginfo_t sq_info;
        void (*sq_func)(struct sigqueue *);
        void *sq_backptr;

} sigqueue_t;
# 454 "/usr/include/sys/siginfo.h" 3 4
}
# 26 "/usr/include/sys/wait.h" 2 3 4
# 1 "/usr/include/sys/procset.h" 1 3 4
# 16 "/usr/include/sys/procset.h" 3 4
#pragma ident "@(#)procset.h	1.20	00/02/14 SMI"


extern "C" {


# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 23 "/usr/include/sys/procset.h" 2 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 24 "/usr/include/sys/procset.h" 2 3 4
# 41 "/usr/include/sys/procset.h" 3 4
typedef enum

        idtype

                {
        P_PID,
        P_PPID,
        P_PGID,

        P_SID,
        P_CID,
        P_UID,
        P_GID,
        P_ALL,
        P_LWPID,
        P_TASKID,
        P_PROJID
} idtype_t;
# 67 "/usr/include/sys/procset.h" 3 4
typedef enum idop {
        POP_DIFF,


        POP_AND,


        POP_OR,


        POP_XOR


} idop_t;







typedef struct procset {
        idop_t p_op;




        idtype_t p_lidtype;


        id_t p_lid;

        idtype_t p_ridtype;


        id_t p_rid;
} procset_t;
# 132 "/usr/include/sys/procset.h" 3 4
}
# 27 "/usr/include/sys/wait.h" 2 3 4



extern "C" {
# 86 "/usr/include/sys/wait.h" 3 4
extern pid_t wait(int *);
extern pid_t waitpid(pid_t, int *, int);


extern int waitid(idtype_t, id_t, siginfo_t *, int);
extern pid_t wait3(int *, int, struct rusage *);




extern pid_t wait4(pid_t, int *, int, struct rusage *);
# 118 "/usr/include/sys/wait.h" 3 4
}
# 23 "/usr/include/stdlib.h" 2 3 4
# 64 "/usr/include/stdlib.h" 3 4
extern "C" {



typedef struct {
        long long quot;
        long long rem;
} lldiv_t;
# 109 "/usr/include/stdlib.h" 3 4
extern int rand_r(unsigned int *);


extern void _exithandle(void);




extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(char *);
extern void setkey(const char *);
# 150 "/usr/include/stdlib.h" 3 4
extern int mkstemp(char *);
# 161 "/usr/include/stdlib.h" 3 4
extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);




extern int dup2(int, int);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern char *lltostr(long long, char *);
extern long long strtoll(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern char *ulltostr(unsigned long long, char *);
# 308 "/usr/include/stdlib.h" 3 4
}
# 42 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 2 3
# 73 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdlib.h" 3
namespace std
{
  using ::div_t;
  using ::ldiv_t;

  using ::abort;
  using ::abs;
  using ::atexit;
  using ::atof;
  using ::atoi;
  using ::atol;
  using ::bsearch;
  using ::calloc;
  using ::div;
  using ::exit;
  using ::free;
  using ::getenv;
  using ::labs;
  using ::ldiv;
  using ::malloc;
  using ::mblen;
  using ::mbstowcs;
  using ::mbtowc;
  using ::qsort;
  using ::rand;
  using ::realloc;
  using ::srand;
  using ::strtod;
  using ::strtol;
  using ::strtoul;
  using ::system;
  using ::wcstombs;
  using ::wctomb;

  inline long
  abs(long __i) { return labs(__i); }

  inline ldiv_t
  div(long __i, long __j) { return ldiv(__i, __j); }
}
# 74 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 1 3
# 75 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/new" 1 3
# 40 "/usr/local/gcc-3.0.1/include/g++-v3/new" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/cstddef" 1 3
# 41 "/usr/local/gcc-3.0.1/include/g++-v3/new" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/exception" 1 3
# 39 "/usr/local/gcc-3.0.1/include/g++-v3/exception" 3
extern "C++" {

namespace std
{






  class exception
  {
  public:
    exception() throw() { }
    virtual ~exception() throw();


    virtual const char* what() const throw();
  };



  class bad_exception : public exception
  {
  public:
    bad_exception() throw() { }
    virtual ~bad_exception() throw();
  };


  typedef void (*terminate_handler) ();

  typedef void (*unexpected_handler) ();


  terminate_handler set_terminate(terminate_handler) throw();


  void terminate() __attribute__ ((__noreturn__));


  unexpected_handler set_unexpected(unexpected_handler) throw();


  void unexpected() __attribute__ ((__noreturn__));
# 95 "/usr/local/gcc-3.0.1/include/g++-v3/exception" 3
  bool uncaught_exception() throw();
}

}
# 42 "/usr/local/gcc-3.0.1/include/g++-v3/new" 2 3

extern "C++" {

namespace std
{


  class bad_alloc : public exception
  {
  public:
    bad_alloc() throw() { }
    virtual ~bad_alloc() throw();
  };

  struct nothrow_t { };
  extern const nothrow_t nothrow;


  typedef void (*new_handler)();

  new_handler set_new_handler(new_handler);
}
# 76 "/usr/local/gcc-3.0.1/include/g++-v3/new" 3
void *operator new(std::size_t) throw (std::bad_alloc);
void *operator new[](std::size_t) throw (std::bad_alloc);
void operator delete(void *) throw();
void operator delete[](void *) throw();
void *operator new(std::size_t, const std::nothrow_t&) throw();
void *operator new[](std::size_t, const std::nothrow_t&) throw();
void operator delete(void *, const std::nothrow_t&) throw();
void operator delete[](void *, const std::nothrow_t&) throw();


inline void *operator new(std::size_t, void *place) throw() { return place; }
inline void *operator new[](std::size_t, void *place) throw() { return place; }

}
# 76 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 40 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stringfwd.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stringfwd.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 40 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stringfwd.h" 2 3

namespace std
{
  template<class _CharT>
    struct char_traits;

  template<> struct char_traits<char>;




  template<typename _Alloc>
    class allocator;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_string;

  typedef basic_string<char> string;



}
# 41 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/fpos.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/fpos.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++io.h" 1 3
# 35 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++io.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/cstdio" 1 3
# 31 "/usr/local/gcc-3.0.1/include/g++-v3/cstdio" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 1 3
# 39 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 2 3
# 41 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 3
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 1 3 4
# 14 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdarg.h" 1 3 4
# 43 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 15 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 2 3 4
# 34 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
#pragma ident "@(#)stdio.h	1.78	99/12/08 SMI"

# 1 "/usr/include/iso/stdio_iso.h" 1 3 4
# 32 "/usr/include/iso/stdio_iso.h" 3 4
#pragma ident "@(#)stdio_iso.h	1.2	99/10/25 SMI"


# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 36 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/sys/va_list.h" 1 3 4
# 9 "/usr/include/sys/va_list.h" 3 4
#pragma ident "@(#)va_list.h	1.12	99/05/04 SMI"
# 22 "/usr/include/sys/va_list.h" 3 4
extern "C" {



typedef void *__va_list;





}
# 37 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/stdio_tag.h" 1 3 4
# 9 "/usr/include/stdio_tag.h" 3 4
#pragma ident "@(#)stdio_tag.h	1.3	98/04/20 SMI"


extern "C" {
# 21 "/usr/include/stdio_tag.h" 3 4
typedef struct FILE __FILE;



}
# 38 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/stdio_impl.h" 1 3 4
# 9 "/usr/include/stdio_impl.h" 3 4
#pragma ident "@(#)stdio_impl.h	1.8	99/06/10 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 12 "/usr/include/stdio_impl.h" 2 3 4


extern "C" {
# 30 "/usr/include/stdio_impl.h" 3 4
struct FILE {
        long __pad[16];
};
# 58 "/usr/include/stdio_impl.h" 3 4
}
# 39 "/usr/include/iso/stdio_iso.h" 2 3 4
# 49 "/usr/include/iso/stdio_iso.h" 3 4
extern "C" {
# 75 "/usr/include/iso/stdio_iso.h" 3 4
typedef __FILE FILE;
# 88 "/usr/include/iso/stdio_iso.h" 3 4
typedef long fpos_t;
# 147 "/usr/include/iso/stdio_iso.h" 3 4
extern __FILE __iob[20];
# 164 "/usr/include/iso/stdio_iso.h" 3 4
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);

extern int fprintf(FILE *, const char *, ...);

extern int fscanf(FILE *, const char *, ...);

extern int printf(const char *, ...);

extern int scanf(const char *, ...);

extern int sprintf(char *, const char *, ...);

extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, __va_list);
extern int vprintf(const char *, __va_list);
extern int vsprintf(char *, const char *, __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);


extern int getc(FILE *);
extern int putc(int, FILE *);



extern int getchar(void);
extern int putchar(int);

extern char *gets(char *);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);


extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);

extern void perror(const char *);
# 336 "/usr/include/iso/stdio_iso.h" 3 4
}
# 37 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 2 3 4
# 98 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
extern "C" {
# 121 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
typedef fpos_t fpos64_t;
# 134 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
typedef __va_list __not_va_list__;
# 151 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
extern unsigned char _sibuf[], _sobuf[];
# 225 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
extern char *tmpnam_r(char *);



extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);





extern int snprintf(char *, size_t, const char *, ...);




extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list);
# 250 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 261 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
extern void flockfile(FILE *);
extern int ftrylockfile(FILE *);
extern void funlockfile(FILE *);
extern int getc_unlocked(FILE *);
extern int getchar_unlocked(void);
extern int putc_unlocked(int, FILE *);
extern int putchar_unlocked(int);
# 276 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
extern FILE *popen(const char *, const char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getopt(int, char *const *, const char *);



extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);







extern int fseeko(FILE *, off_t, int);
extern off_t ftello(FILE *);
# 412 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 3 4
}
# 42 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 2 3
# 86 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstdio.h" 3
namespace std
{
  using ::FILE;
  using ::fpos_t;

  using ::clearerr;
  using ::fclose;
  using ::feof;
  using ::ferror;
  using ::fflush;
  using ::fgetc;
  using ::fgetpos;
  using ::fgets;
  using ::fopen;
  using ::fprintf;
  using ::fputc;
  using ::fputs;
  using ::fread;
  using ::freopen;
  using ::fscanf;
  using ::fseek;
  using ::fsetpos;
  using ::ftell;
  using ::fwrite;
  using ::getc;
  using ::getchar;
  using ::gets;
  using ::perror;
  using ::printf;
  using ::putc;
  using ::putchar;
  using ::puts;
  using ::remove;
  using ::rename;
  using ::rewind;
  using ::scanf;
  using ::setbuf;
  using ::setvbuf;
  using ::sprintf;
  using ::sscanf;
  using ::tmpfile;
  using ::tmpnam;
  using ::ungetc;
  using ::vfprintf;
  using ::vprintf;
  using ::vsprintf;
}
# 32 "/usr/local/gcc-3.0.1/include/g++-v3/cstdio" 2 3
# 36 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++io.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/cstddef" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++io.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr.h" 1 3
# 98 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr-default.h" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr-default.h" 3
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 1 3 4
# 18 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 3 4
#pragma ident "@(#)pthread.h	1.28	99/11/15 SMI"


# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 22 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 2 3 4
# 1 "/usr/include/time.h" 1 3 4
# 23 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 2 3 4
# 1 "/usr/include/sched.h" 1 3 4
# 11 "/usr/include/sched.h" 3 4
#pragma ident "@(#)sched.h	1.9	98/01/16 SMI"

# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/sys/types.h" 1 3 4
# 14 "/usr/include/sched.h" 2 3 4
# 1 "/usr/include/time.h" 1 3 4
# 15 "/usr/include/sched.h" 2 3 4


extern "C" {


struct sched_param {
        int sched_priority;
        int sched_nicelim;
        int sched_nice;
        int sched_pad[6];



};
# 44 "/usr/include/sched.h" 3 4
int sched_getparam(pid_t pid, struct sched_param *param);
int sched_setparam(pid_t pid, const struct sched_param *param);
int sched_getscheduler(pid_t pid);
int sched_setscheduler(pid_t pid, int policy,
                const struct sched_param *param);
int sched_yield(void);
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
int sched_rr_get_interval(pid_t pid, struct timespec *interval);
# 65 "/usr/include/sched.h" 3 4
}
# 24 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 2 3 4



extern "C" {
# 125 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 3 4
typedef struct _cleanup {
        uintptr_t pthread_cleanup_pad[4];
} _cleanup_t;



void __pthread_cleanup_push(void (*routine)(void *), void *args,
                                        caddr_t fp, _cleanup_t *info);
void __pthread_cleanup_pop(int ex, _cleanup_t *info);
caddr_t _getfp(void);
# 159 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 3 4
extern int pthread_attr_init(pthread_attr_t *);
extern int pthread_attr_destroy(pthread_attr_t *);
extern int pthread_attr_setstacksize(pthread_attr_t *, size_t);
extern int pthread_attr_getstacksize(const pthread_attr_t *, size_t *);
extern int pthread_attr_setstackaddr(pthread_attr_t *, void *);
extern int pthread_attr_getstackaddr(const pthread_attr_t *, void **);
extern int pthread_attr_setdetachstate(pthread_attr_t *, int);
extern int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
extern int pthread_attr_setscope(pthread_attr_t *, int);
extern int pthread_attr_getscope(const pthread_attr_t *, int *);
extern int pthread_attr_setinheritsched(pthread_attr_t *, int);
extern int pthread_attr_getinheritsched(const pthread_attr_t *, int *);
extern int pthread_attr_setschedpolicy(pthread_attr_t *, int);
extern int pthread_attr_getschedpolicy(const pthread_attr_t *, int *);
extern int pthread_attr_setschedparam(pthread_attr_t *,
                                        const struct sched_param *);
extern int pthread_attr_getschedparam(const pthread_attr_t *,
                                        struct sched_param *);
extern int pthread_create(pthread_t *, const pthread_attr_t *,
                                void * (*)(void *), void *);
extern int pthread_once(pthread_once_t *, void (*)(void));
extern int pthread_join(pthread_t, void **);
extern int pthread_detach(pthread_t);
extern void pthread_exit(void *);
extern int pthread_cancel(pthread_t);
extern int pthread_setschedparam(pthread_t, int, const struct sched_param *);
extern int pthread_getschedparam(pthread_t, int *, struct sched_param *);
extern int pthread_setcancelstate(int, int *);
extern int pthread_setcanceltype(int, int *);
extern void pthread_testcancel(void);
extern int pthread_equal(pthread_t, pthread_t);
extern int pthread_key_create(pthread_key_t *, void (*)(void *));
extern int pthread_key_delete(pthread_key_t);
extern int pthread_setspecific(pthread_key_t, const void *);
extern void *pthread_getspecific(pthread_key_t);
extern pthread_t pthread_self(void);




extern int pthread_mutexattr_init(pthread_mutexattr_t *);
extern int pthread_mutexattr_destroy(pthread_mutexattr_t *);
extern int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
extern int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *);
extern int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
extern int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *);
extern int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
extern int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *);
extern int pthread_mutexattr_setrobust_np(pthread_mutexattr_t *, int);
extern int pthread_mutexattr_getrobust_np(const pthread_mutexattr_t *, int *);
extern int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *);
extern int pthread_mutex_consistent_np(pthread_mutex_t *);
extern int pthread_mutex_destroy(pthread_mutex_t *);
extern int pthread_mutex_lock(pthread_mutex_t *);
extern int pthread_mutex_unlock(pthread_mutex_t *);
extern int pthread_mutex_trylock(pthread_mutex_t *);
extern int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *);
extern int pthread_mutex_getprioceiling(const pthread_mutex_t *, int *);
extern int pthread_condattr_init(pthread_condattr_t *);
extern int pthread_condattr_destroy(pthread_condattr_t *);
extern int pthread_condattr_setpshared(pthread_condattr_t *, int);
extern int pthread_condattr_getpshared(const pthread_condattr_t *, int *);
extern int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
extern int pthread_cond_destroy(pthread_cond_t *);
extern int pthread_cond_broadcast(pthread_cond_t *);
extern int pthread_cond_signal(pthread_cond_t *);
extern int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);
extern int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *,
                                        const struct timespec *);
extern int pthread_attr_getguardsize(const pthread_attr_t *, size_t *);
extern int pthread_attr_setguardsize(pthread_attr_t *, size_t);
extern int pthread_getconcurrency(void);
extern int pthread_setconcurrency(int newval);
extern int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
extern int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *);
extern int pthread_rwlock_init(pthread_rwlock_t *,
                                const pthread_rwlockattr_t *);
extern int pthread_rwlock_destroy(pthread_rwlock_t *);
extern int pthread_rwlock_rdlock(pthread_rwlock_t *);
extern int pthread_rwlock_tryrdlock(pthread_rwlock_t *);
extern int pthread_rwlock_wrlock(pthread_rwlock_t *);
extern int pthread_rwlock_trywrlock(pthread_rwlock_t *);
extern int pthread_rwlock_unlock(pthread_rwlock_t *);
extern int pthread_rwlockattr_init(pthread_rwlockattr_t *);
extern int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
extern int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *);
extern int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
# 340 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/pthread.h" 3 4
}
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr-default.h" 2 3

typedef pthread_key_t __gthread_key_t;
typedef pthread_once_t __gthread_once_t;
typedef pthread_mutex_t __gthread_mutex_t;






#pragma weak pthread_once
#pragma weak pthread_key_create
#pragma weak pthread_key_delete
#pragma weak pthread_getspecific
#pragma weak pthread_setspecific
#pragma weak pthread_create

#pragma weak pthread_mutex_lock
#pragma weak pthread_mutex_trylock
#pragma weak pthread_mutex_unlock
# 80 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr-default.h" 3
static void *__gthread_active_ptr = (void *) &pthread_create;

static inline int
__gthread_active_p (void)
{
  return __gthread_active_ptr != 0;
}
# 438 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr-default.h" 3
static inline int
__gthread_once (__gthread_once_t *once, void (*func) (void))
{
  if (__gthread_active_p ())
    return pthread_once (once, func);
  else
    return -1;
}

static inline int
__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
{
  return pthread_key_create (key, dtor);
}

static inline int
__gthread_key_dtor (__gthread_key_t key, void *ptr)
{

  if (ptr)
    return pthread_setspecific (key, 0);
  else
    return 0;
}

static inline int
__gthread_key_delete (__gthread_key_t key)
{
  return pthread_key_delete (key);
}

static inline void *
__gthread_getspecific (__gthread_key_t key)
{
  return pthread_getspecific (key);
}

static inline int
__gthread_setspecific (__gthread_key_t key, const void *ptr)
{
  return pthread_setspecific (key, ptr);
}

static inline int
__gthread_mutex_lock (__gthread_mutex_t *mutex)
{
  if (__gthread_active_p ())
    return pthread_mutex_lock (mutex);
  else
    return 0;
}

static inline int
__gthread_mutex_trylock (__gthread_mutex_t *mutex)
{
  if (__gthread_active_p ())
    return pthread_mutex_trylock (mutex);
  else
    return 0;
}

static inline int
__gthread_mutex_unlock (__gthread_mutex_t *mutex)
{
  if (__gthread_active_p ())
    return pthread_mutex_unlock (mutex);
  else
    return 0;
}
# 99 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/gthr.h" 2 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++io.h" 2 3

namespace std
{

  typedef long streamoff;
  typedef ptrdiff_t streamsize;



  typedef fpos_t __c_streampos;

  typedef __gthread_mutex_t __c_lock;



  typedef FILE __c_file_type;


  struct __ios_flags
  {
    typedef short __int_type;

    static const __int_type _S_boolalpha = 0x0001;
    static const __int_type _S_dec = 0x0002;
    static const __int_type _S_fixed = 0x0004;
    static const __int_type _S_hex = 0x0008;
    static const __int_type _S_internal = 0x0010;
    static const __int_type _S_left = 0x0020;
    static const __int_type _S_oct = 0x0040;
    static const __int_type _S_right = 0x0080;
    static const __int_type _S_scientific = 0x0100;
    static const __int_type _S_showbase = 0x0200;
    static const __int_type _S_showpoint = 0x0400;
    static const __int_type _S_showpos = 0x0800;
    static const __int_type _S_skipws = 0x1000;
    static const __int_type _S_unitbuf = 0x2000;
    static const __int_type _S_uppercase = 0x4000;
    static const __int_type _S_adjustfield = 0x0020 | 0x0080 | 0x0010;
    static const __int_type _S_basefield = 0x0002 | 0x0040 | 0x0008;
    static const __int_type _S_floatfield = 0x0100 | 0x0004;


    static const __int_type _S_badbit = 0x01;
    static const __int_type _S_eofbit = 0x02;
    static const __int_type _S_failbit = 0x04;


    static const __int_type _S_app = 0x01;
    static const __int_type _S_ate = 0x02;
    static const __int_type _S_bin = 0x04;
    static const __int_type _S_in = 0x08;
    static const __int_type _S_out = 0x10;
    static const __int_type _S_trunc = 0x20;
  };
}
# 40 "/usr/local/gcc-3.0.1/include/g++-v3/bits/fpos.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 1 3
# 37 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 38 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 1 3
# 39 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 2 3
# 42 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 3
# 1 "/usr/include/wchar.h" 1 3 4
# 9 "/usr/include/wchar.h" 3 4
#pragma ident "@(#)wchar.h	1.33	99/08/30 SMI"

# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 1 3 4
# 30 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
#pragma ident "@(#)wchar_iso.h	1.2	99/11/10 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 33 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4
# 1 "/usr/include/stdio_tag.h" 1 3 4
# 34 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4
# 1 "/usr/include/wchar_impl.h" 1 3 4
# 9 "/usr/include/wchar_impl.h" 3 4
#pragma ident "@(#)wchar_impl.h	1.3	99/07/26 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 12 "/usr/include/wchar_impl.h" 2 3 4


extern "C" {




typedef struct __mbstate_t {

        long __filler[4];



} __mbstate_t;



}
# 35 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4
# 1 "/usr/include/iso/time_iso.h" 1 3 4
# 36 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4




# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stdio.h" 1 3 4
# 41 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4



# 1 "/usr/include/ctype.h" 1 3 4
# 16 "/usr/include/ctype.h" 3 4
#pragma ident "@(#)ctype.h	1.33	99/08/10 SMI"

# 1 "/usr/include/iso/ctype_iso.h" 1 3 4
# 28 "/usr/include/iso/ctype_iso.h" 3 4
#pragma ident "@(#)ctype_iso.h	1.1	99/08/09 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 31 "/usr/include/iso/ctype_iso.h" 2 3 4


extern "C" {
# 63 "/usr/include/iso/ctype_iso.h" 3 4
extern int isalnum(int);
extern int isalpha(int);
extern int iscntrl(int);
extern int isdigit(int);
extern int isgraph(int);
extern int islower(int);
extern int isprint(int);
extern int ispunct(int);
extern int isspace(int);
extern int isupper(int);
extern int isxdigit(int);







extern int tolower(int);
extern int toupper(int);





extern unsigned char __ctype[];
extern unsigned int *__ctype_mask;
extern int *__trans_upper;
extern int *__trans_lower;
# 186 "/usr/include/iso/ctype_iso.h" 3 4
}
# 19 "/usr/include/ctype.h" 2 3 4
# 41 "/usr/include/ctype.h" 3 4
extern "C" {







extern int isascii(int);
extern int toascii(int);
extern int _tolower(int);
extern int _toupper(int);
# 90 "/usr/include/ctype.h" 3 4
}
# 45 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/stddef.h" 1 3 4
# 46 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4


# 1 "/usr/include/sys/va_list.h" 1 3 4
# 49 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 2 3 4


extern "C" {
# 74 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
typedef int wint_t;
# 113 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
typedef __mbstate_t mbstate_t;
# 124 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
extern wint_t fgetwc(__FILE *);
extern wchar_t *fgetws(wchar_t *, int, __FILE *);
extern wint_t fputwc(wint_t, __FILE *);
extern int fputws(const wchar_t *, __FILE *);
extern wint_t ungetwc(wint_t, __FILE *);
extern wint_t getwc(__FILE *);
extern wint_t getwchar(void);
extern wint_t putwc(wint_t, __FILE *);
extern wint_t putwchar(wint_t);
extern double wcstod(const wchar_t *, wchar_t **);
extern long wcstol(const wchar_t *, wchar_t **, int);
extern unsigned long wcstoul(const wchar_t *, wchar_t **, int);
extern wchar_t *wcscat(wchar_t *, const wchar_t *);
extern int wcscmp(const wchar_t *, const wchar_t *);
extern int wcscoll(const wchar_t *, const wchar_t *);
extern wchar_t *wcscpy(wchar_t *, const wchar_t *);
extern size_t wcscspn(const wchar_t *, const wchar_t *);
extern size_t wcslen(const wchar_t *);
extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t);
extern int wcsncmp(const wchar_t *, const wchar_t *, size_t);
extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t);
extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t);
# 167 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
extern wchar_t *wcschr(const wchar_t *, wchar_t);
extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
# 183 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
extern wchar_t *__wcstok_xpg5(wchar_t *, const wchar_t *, wchar_t **);
extern size_t __wcsftime_xpg5(wchar_t *, size_t, const wchar_t *,
        const struct tm *);
# 194 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
extern wint_t btowc(int);
extern int fwprintf(__FILE *, const wchar_t *, ...);
extern int fwscanf(__FILE *, const wchar_t *, ...);
extern int fwide(__FILE *, int);
extern int mbsinit(const mbstate_t *);
extern size_t mbrlen(const char *, size_t, mbstate_t *);
extern size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
extern size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *);
extern int swprintf(wchar_t *, size_t, const wchar_t *, ...);
extern int swscanf(const wchar_t *, const wchar_t *, ...);
extern int vfwprintf(__FILE *, const wchar_t *, __va_list);
extern int vwprintf(const wchar_t *, __va_list);
extern int vswprintf(wchar_t *, size_t, const wchar_t *, __va_list);
extern size_t wcrtomb(char *, wchar_t, mbstate_t *);
extern size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
extern int wctob(wint_t);
extern int wmemcmp(const wchar_t *, const wchar_t *, size_t);
extern wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t);
extern wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
extern wchar_t *wmemset(wchar_t *, wchar_t, size_t);
extern int wprintf(const wchar_t *, ...);
extern int wscanf(const wchar_t *, ...);
# 230 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
extern wchar_t *wcsstr(const wchar_t *, const wchar_t *);
extern wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
# 329 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
extern wint_t __fgetwc_xpg5(__FILE *);
extern wint_t __getwc_xpg5(__FILE *);
extern wint_t __getwchar_xpg5(void);
extern wint_t __fputwc_xpg5(wint_t, __FILE *);
extern wint_t __putwc_xpg5(wint_t, __FILE *);
extern wint_t __putwchar_xpg5(wint_t);
extern wchar_t *__fgetws_xpg5(wchar_t *, int, __FILE *);
extern int __fputws_xpg5(const wchar_t *, __FILE *);
extern wint_t __ungetwc_xpg5(wint_t, __FILE *);
# 367 "/usr/local/gcc-3.0.1/lib/gcc-lib/sparcv9-sun-solaris2.8/3.0.1/include/iso/wchar_iso.h" 3 4
}
# 12 "/usr/include/wchar.h" 2 3 4
# 81 "/usr/include/wchar.h" 3 4
extern "C" {





typedef int wctype_t;






extern int iswalpha(wint_t);
extern int iswupper(wint_t);
extern int iswlower(wint_t);
extern int iswdigit(wint_t);
extern int iswxdigit(wint_t);
extern int iswalnum(wint_t);
extern int iswspace(wint_t);
extern int iswpunct(wint_t);
extern int iswprint(wint_t);
extern int iswgraph(wint_t);
extern int iswcntrl(wint_t);
extern int iswctype(wint_t, wctype_t);
extern wint_t towlower(wint_t);
extern wint_t towupper(wint_t);
extern wchar_t *wcswcs(const wchar_t *, const wchar_t *);
extern int wcswidth(const wchar_t *, size_t);
extern int wcwidth(const wchar_t);
extern wctype_t wctype(const char *);
# 140 "/usr/include/wchar.h" 3 4
}
# 43 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 2 3
# 57 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cwchar.h" 3
namespace std
{
  using ::mbstate_t;
}
# 41 "/usr/local/gcc-3.0.1/include/g++-v3/bits/fpos.h" 2 3

namespace std
{



  template<typename _StateT>
    class fpos
    {
    public:

      typedef _StateT __state_type;

    private:
      streamoff _M_off;
      __state_type _M_st;

    public:
      __state_type
      state() const { return _M_st; }

      void
      state(__state_type __st) { _M_st = __st; }



      fpos(): _M_off(streamoff()), _M_st(__state_type()) { }

      fpos(streamoff __off, __state_type __st = __state_type())
      : _M_off(__off), _M_st(__st) { }

      operator streamoff() const { return _M_off; }

      fpos&
      operator+=(streamoff __off) { _M_off += __off; return *this; }

      fpos&
      operator-=(streamoff __off) { _M_off -= __off; return *this; }

      fpos
      operator+(streamoff __off)
      {
        fpos __t(*this);
        __t += __off;
        return __t;
      }

      fpos
      operator-(streamoff __off)
      {
        fpos __t(*this);
        __t -= __off;
        return __t;
      }

      bool
      operator==(const fpos& __pos) const
      { return _M_off == __pos._M_off; }

      bool
      operator!=(const fpos& __pos) const
      { return _M_off != __pos._M_off; }

      streamoff
      _M_position() const { return _M_off; }

      void
      _M_position(streamoff __off) { _M_off = __off; }
    };


  typedef fpos<mbstate_t> streampos;



}
# 42 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/functexcept.h" 1 3
# 34 "/usr/local/gcc-3.0.1/include/g++-v3/bits/functexcept.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/exception_defines.h" 1 3
# 35 "/usr/local/gcc-3.0.1/include/g++-v3/bits/functexcept.h" 2 3

namespace std
{

  void
  __throw_bad_exception(void);


  void
  __throw_bad_alloc(void);


  void
  __throw_bad_cast(void);

  void
  __throw_bad_typeid(void);


  void
  __throw_logic_error(const char* __s);

  void
  __throw_domain_error(const char* __s);

  void
  __throw_invalid_argument(const char* __s);

  void
  __throw_length_error(const char* __s);

  void
  __throw_out_of_range(const char* __s);

  void
  __throw_runtime_error(const char* __s);

  void
  __throw_range_error(const char* __s);

  void
  __throw_overflow_error(const char* __s);

  void
  __throw_underflow_error(const char* __s);


  void
  __throw_ios_failure(const char* __s);
}
# 43 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 2 3

namespace std
{
  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ios;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_streambuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_istream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ostream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_iostream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
            typename _Alloc = allocator<_CharT> >
    class basic_stringbuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_istringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_ostringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT>,
           typename _Alloc = allocator<_CharT> >
    class basic_stringstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_filebuf;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ifstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_ofstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class basic_fstream;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class istreambuf_iterator;

  template<typename _CharT, typename _Traits = char_traits<_CharT> >
    class ostreambuf_iterator;



  class ios_base;


  typedef basic_ios<char> ios;
  typedef basic_streambuf<char> streambuf;
  typedef basic_istream<char> istream;
  typedef basic_ostream<char> ostream;
  typedef basic_iostream<char> iostream;
  typedef basic_stringbuf<char> stringbuf;
  typedef basic_istringstream<char> istringstream;
  typedef basic_ostringstream<char> ostringstream;
  typedef basic_stringstream<char> stringstream;
  typedef basic_filebuf<char> filebuf;
  typedef basic_ifstream<char> ifstream;
  typedef basic_ofstream<char> ofstream;
  typedef basic_fstream<char> fstream;
# 129 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_iosfwd.h" 3
}
# 78 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_types.h" 1 3
# 69 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_types.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/std_cstddef.h" 1 3
# 71 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_types.h" 2 3


namespace std
{

struct input_iterator_tag {};
struct output_iterator_tag {};
struct forward_iterator_tag : public input_iterator_tag {};
struct bidirectional_iterator_tag : public forward_iterator_tag {};
struct random_access_iterator_tag : public bidirectional_iterator_tag {};






template <class _Tp, class _Distance> struct input_iterator {
  typedef input_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

struct output_iterator {
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;
};

template <class _Tp, class _Distance> struct forward_iterator {
  typedef forward_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};


template <class _Tp, class _Distance> struct bidirectional_iterator {
  typedef bidirectional_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

template <class _Tp, class _Distance> struct random_access_iterator {
  typedef random_access_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

template <class _Category, class _Tp, class _Distance = ptrdiff_t,
          class _Pointer = _Tp*, class _Reference = _Tp&>
struct iterator {
  typedef _Category iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Pointer pointer;
  typedef _Reference reference;
};

template <class _Iterator>
struct iterator_traits {
  typedef typename _Iterator::iterator_category iterator_category;
  typedef typename _Iterator::value_type value_type;
  typedef typename _Iterator::difference_type difference_type;
  typedef typename _Iterator::pointer pointer;
  typedef typename _Iterator::reference reference;
};

template <class _Tp>
struct iterator_traits<_Tp*> {
  typedef random_access_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef ptrdiff_t difference_type;
  typedef _Tp* pointer;
  typedef _Tp& reference;
};

template <class _Tp>
struct iterator_traits<const _Tp*> {
  typedef random_access_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef ptrdiff_t difference_type;
  typedef const _Tp* pointer;
  typedef const _Tp& reference;
};
# 172 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_types.h" 3
template <class _Iter>
inline typename iterator_traits<_Iter>::iterator_category
__iterator_category(const _Iter&)
{
  typedef typename iterator_traits<_Iter>::iterator_category _Category;
  return _Category();
}

template <class _Iter>
inline typename iterator_traits<_Iter>::difference_type*
__distance_type(const _Iter&)
{
  return static_cast<typename iterator_traits<_Iter>::difference_type*>(0);
}

template <class _Iter>
inline typename iterator_traits<_Iter>::value_type*
__value_type(const _Iter&)
{
  return static_cast<typename iterator_traits<_Iter>::value_type*>(0);
}

template <class _Iter>
inline typename iterator_traits<_Iter>::iterator_category
iterator_category(const _Iter& __i) { return __iterator_category(__i); }


template <class _Iter>
inline typename iterator_traits<_Iter>::difference_type*
distance_type(const _Iter& __i) { return __distance_type(__i); }

template <class _Iter>
inline typename iterator_traits<_Iter>::value_type*
value_type(const _Iter& __i) { return __value_type(__i); }

}
# 79 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 1 3
# 69 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/concept_check.h" 1 3
# 34 "/usr/local/gcc-3.0.1/include/g++-v3/bits/concept_check.h" 3

# 1 "/usr/local/gcc-3.0.1/include/g++-v3/sparcv9-sun-solaris2.8/bits/c++config.h" 1 3
# 36 "/usr/local/gcc-3.0.1/include/g++-v3/bits/concept_check.h" 2 3
# 70 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator_base_funcs.h" 2 3

namespace std
{





template <class _InputIterator, class _Distance>
inline void __distance(_InputIterator __first, _InputIterator __last,
                       _Distance& __n, input_iterator_tag)
{

                                                                    ;
  while (__first != __last) { ++__first; ++__n; }
}

template <class _RandomAccessIterator, class _Distance>
inline void __distance(_RandomAccessIterator __first,
                       _RandomAccessIterator __last,
                       _Distance& __n, random_access_iterator_tag)
{

                                                                                  ;
  __n += __last - __first;
}

template <class _InputIterator, class _Distance>
inline void distance(_InputIterator __first,
                     _InputIterator __last, _Distance& __n)
{

  __distance(__first, __last, __n, iterator_category(__first));
}

template <class _InputIterator>
inline typename iterator_traits<_InputIterator>::difference_type
__distance(_InputIterator __first, _InputIterator __last, input_iterator_tag)
{

                                                                    ;
  typename iterator_traits<_InputIterator>::difference_type __n = 0;
  while (__first != __last) {
    ++__first; ++__n;
  }
  return __n;
}

template <class _RandomAccessIterator>
inline typename iterator_traits<_RandomAccessIterator>::difference_type
__distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
           random_access_iterator_tag)
{

                                                                                  ;
  return __last - __first;
}

template <class _InputIterator>
inline typename iterator_traits<_InputIterator>::difference_type
distance(_InputIterator __first, _InputIterator __last)
{

  typedef typename iterator_traits<_InputIterator>::iterator_category
    _Category;
  return __distance(__first, __last, _Category());
}

template <class _InputIter, class _Distance>
inline void __advance(_InputIter& __i, _Distance __n, input_iterator_tag)
{

                                                                ;
  while (__n--) ++__i;
}

template <class _BidirectionalIterator, class _Distance>
inline void __advance(_BidirectionalIterator& __i, _Distance __n,
                      bidirectional_iterator_tag)
{

                                                                                  ;
  if (__n > 0)
    while (__n--) ++__i;
  else
    while (__n++) --__i;
}

template <class _RandomAccessIterator, class _Distance>
inline void __advance(_RandomAccessIterator& __i, _Distance __n,
                      random_access_iterator_tag)
{

                                                                                  ;
  __i += __n;
}

template <class _InputIterator, class _Distance>
inline void advance(_InputIterator& __i, _Distance __n)
{

  __advance(__i, __n, iterator_category(__i));
}

}
# 80 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator.h" 1 3
# 63 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator.h" 3
namespace std
{

template <class _Container>
class back_insert_iterator {
protected:
  _Container* container;
public:
  typedef _Container container_type;
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  explicit back_insert_iterator(_Container& __x) : container(&__x) {}
  back_insert_iterator<_Container>&
  operator=(const typename _Container::value_type& __value) {
    container->push_back(__value);
    return *this;
  }
  back_insert_iterator<_Container>& operator*() { return *this; }
  back_insert_iterator<_Container>& operator++() { return *this; }
  back_insert_iterator<_Container>& operator++(int) { return *this; }
};

template <class _Container>
inline back_insert_iterator<_Container> back_inserter(_Container& __x) {
  return back_insert_iterator<_Container>(__x);
}

template <class _Container>
class front_insert_iterator {
protected:
  _Container* container;
public:
  typedef _Container container_type;
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  explicit front_insert_iterator(_Container& __x) : container(&__x) {}
  front_insert_iterator<_Container>&
  operator=(const typename _Container::value_type& __value) {
    container->push_front(__value);
    return *this;
  }
  front_insert_iterator<_Container>& operator*() { return *this; }
  front_insert_iterator<_Container>& operator++() { return *this; }
  front_insert_iterator<_Container>& operator++(int) { return *this; }
};

template <class _Container>
inline front_insert_iterator<_Container> front_inserter(_Container& __x) {
  return front_insert_iterator<_Container>(__x);
}

template <class _Container>
class insert_iterator {
protected:
  _Container* container;
  typename _Container::iterator iter;
public:
  typedef _Container container_type;
  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  insert_iterator(_Container& __x, typename _Container::iterator __i)
    : container(&__x), iter(__i) {}
  insert_iterator<_Container>&
  operator=(const typename _Container::value_type& __value) {
    iter = container->insert(iter, __value);
    ++iter;
    return *this;
  }
  insert_iterator<_Container>& operator*() { return *this; }
  insert_iterator<_Container>& operator++() { return *this; }
  insert_iterator<_Container>& operator++(int) { return *this; }
};

template <class _Container, class _Iterator>
inline
insert_iterator<_Container> inserter(_Container& __x, _Iterator __i)
{
  typedef typename _Container::iterator __iter;
  return insert_iterator<_Container>(__x, __iter(__i));
}

template <class _BidirectionalIterator, class _Tp, class _Reference = _Tp&,
          class _Distance = ptrdiff_t>
class reverse_bidirectional_iterator {
  typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
                                         _Reference, _Distance> _Self;
protected:
  _BidirectionalIterator current;
public:
  typedef bidirectional_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Distance difference_type;
  typedef _Tp* pointer;
  typedef _Reference reference;

  reverse_bidirectional_iterator() {}
  explicit reverse_bidirectional_iterator(_BidirectionalIterator __x)
    : current(__x) {}
  _BidirectionalIterator base() const { return current; }
  _Reference operator*() const {
    _BidirectionalIterator __tmp = current;
    return *--__tmp;
  }
  pointer operator->() const { return &(operator*()); }
  _Self& operator++() {
    --current;
    return *this;
  }
  _Self operator++(int) {
    _Self __tmp = *this;
    --current;
    return __tmp;
  }
  _Self& operator--() {
    ++current;
    return *this;
  }
  _Self operator--(int) {
    _Self __tmp = *this;
    ++current;
    return __tmp;
  }
};

template <class _BiIter, class _Tp, class _Ref, class _Distance>
inline bool operator==(
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __x,
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __y)
{
  return __x.base() == __y.base();
}

template <class _BiIter, class _Tp, class _Ref, class _Distance>
inline bool operator!=(
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __x,
    const reverse_bidirectional_iterator<_BiIter, _Tp, _Ref, _Distance>& __y)
{
  return !(__x == __y);
}
# 222 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator.h" 3
template <class _Iterator>
class reverse_iterator
{
protected:
  _Iterator current;
public:
  typedef typename iterator_traits<_Iterator>::iterator_category
          iterator_category;
  typedef typename iterator_traits<_Iterator>::value_type
          value_type;
  typedef typename iterator_traits<_Iterator>::difference_type
          difference_type;
  typedef typename iterator_traits<_Iterator>::pointer
          pointer;
  typedef typename iterator_traits<_Iterator>::reference
          reference;

  typedef _Iterator iterator_type;
  typedef reverse_iterator<_Iterator> _Self;

public:
  reverse_iterator() {}
  explicit reverse_iterator(iterator_type __x) : current(__x) {}

  reverse_iterator(const _Self& __x) : current(__x.current) {}
  template <class _Iter>
  reverse_iterator(const reverse_iterator<_Iter>& __x)
    : current(__x.base()) {}

  iterator_type base() const { return current; }
  reference operator*() const {
    _Iterator __tmp = current;
    return *--__tmp;
  }
  pointer operator->() const { return &(operator*()); }

  _Self& operator++() {
    --current;
    return *this;
  }
  _Self operator++(int) {
    _Self __tmp = *this;
    --current;
    return __tmp;
  }
  _Self& operator--() {
    ++current;
    return *this;
  }
  _Self operator--(int) {
    _Self __tmp = *this;
    ++current;
    return __tmp;
  }

  _Self operator+(difference_type __n) const {
    return _Self(current - __n);
  }
  _Self& operator+=(difference_type __n) {
    current -= __n;
    return *this;
  }
  _Self operator-(difference_type __n) const {
    return _Self(current + __n);
  }
  _Self& operator-=(difference_type __n) {
    current += __n;
    return *this;
  }
  reference operator[](difference_type __n) const { return *(*this + __n); }
};

template <class _Iterator>
inline bool operator==(const reverse_iterator<_Iterator>& __x,
                       const reverse_iterator<_Iterator>& __y) {
  return __x.base() == __y.base();
}

template <class _Iterator>
inline bool operator<(const reverse_iterator<_Iterator>& __x,
                      const reverse_iterator<_Iterator>& __y) {
  return __y.base() < __x.base();
}

template <class _Iterator>
inline bool operator!=(const reverse_iterator<_Iterator>& __x,
                       const reverse_iterator<_Iterator>& __y) {
  return !(__x == __y);
}

template <class _Iterator>
inline bool operator>(const reverse_iterator<_Iterator>& __x,
                      const reverse_iterator<_Iterator>& __y) {
  return __y < __x;
}

template <class _Iterator>
inline bool operator<=(const reverse_iterator<_Iterator>& __x,
                       const reverse_iterator<_Iterator>& __y) {
  return !(__y < __x);
}

template <class _Iterator>
inline bool operator>=(const reverse_iterator<_Iterator>& __x,
                      const reverse_iterator<_Iterator>& __y) {
  return !(__x < __y);
}

template <class _Iterator>
inline typename reverse_iterator<_Iterator>::difference_type
operator-(const reverse_iterator<_Iterator>& __x,
          const reverse_iterator<_Iterator>& __y) {
  return __y.base() - __x.base();
}

template <class _Iterator>
inline reverse_iterator<_Iterator>
operator+(typename reverse_iterator<_Iterator>::difference_type __n,
          const reverse_iterator<_Iterator>& __x) {
  return reverse_iterator<_Iterator>(__x.base() - __n);
}


template <class _Tp,
          class _CharT = char, class _Traits = char_traits<_CharT>,
          class _Dist = ptrdiff_t>
class istream_iterator {
public:
  typedef _CharT char_type;
  typedef _Traits traits_type;
  typedef basic_istream<_CharT, _Traits> istream_type;

  typedef input_iterator_tag iterator_category;
  typedef _Tp value_type;
  typedef _Dist difference_type;
  typedef const _Tp* pointer;
  typedef const _Tp& reference;

  istream_iterator() : _M_stream(0), _M_ok(false) {}
  istream_iterator(istream_type& __s) : _M_stream(&__s) { _M_read(); }

  reference operator*() const { return _M_value; }
  pointer operator->() const { return &(operator*()); }

  istream_iterator& operator++() {
    _M_read();
    return *this;
  }
  istream_iterator operator++(int) {
    istream_iterator __tmp = *this;
    _M_read();
    return __tmp;
  }

  bool _M_equal(const istream_iterator& __x) const
    { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }

private:
  istream_type* _M_stream;
  _Tp _M_value;
  bool _M_ok;

  void _M_read() {
    _M_ok = (_M_stream && *_M_stream) ? true : false;
    if (_M_ok) {
      *_M_stream >> _M_value;
      _M_ok = *_M_stream ? true : false;
    }
  }
};

template <class _Tp, class _CharT, class _Traits, class _Dist>
inline bool
operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
           const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) {
  return __x._M_equal(__y);
}

template <class _Tp, class _CharT, class _Traits, class _Dist>
inline bool
operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
           const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y) {
  return !__x._M_equal(__y);
}


template <class _Tp,
          class _CharT = char, class _Traits = char_traits<_CharT> >
class ostream_iterator {
public:
  typedef _CharT char_type;
  typedef _Traits traits_type;
  typedef basic_ostream<_CharT, _Traits> ostream_type;

  typedef output_iterator_tag iterator_category;
  typedef void value_type;
  typedef void difference_type;
  typedef void pointer;
  typedef void reference;

  ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
  ostream_iterator(ostream_type& __s, const _CharT* __c)
    : _M_stream(&__s), _M_string(__c) {}
  ostream_iterator<_Tp>& operator=(const _Tp& __value) {
    *_M_stream << __value;
    if (_M_string) *_M_stream << _M_string;
    return *this;
  }
  ostream_iterator<_Tp>& operator*() { return *this; }
  ostream_iterator<_Tp>& operator++() { return *this; }
  ostream_iterator<_Tp>& operator++(int) { return *this; }
private:
  ostream_type* _M_stream;
  const _CharT* _M_string;
};
# 446 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_iterator.h" 3
template<typename _Iterator, typename _Container>
class __normal_iterator
  : public iterator<iterator_traits<_Iterator>::iterator_category,
                    iterator_traits<_Iterator>::value_type,
                    iterator_traits<_Iterator>::difference_type,
                    iterator_traits<_Iterator>::pointer,
                    iterator_traits<_Iterator>::reference>
{

protected:
  _Iterator _M_current;

public:
  typedef __normal_iterator<_Iterator, _Container> normal_iterator_type;
  typedef iterator_traits<_Iterator> __traits_type;
  typedef typename __traits_type::iterator_category iterator_category;
  typedef typename __traits_type::value_type value_type;
  typedef typename __traits_type::difference_type difference_type;
  typedef typename __traits_type::pointer pointer;
  typedef typename __traits_type::reference reference;

  __normal_iterator() : _M_current(_Iterator()) { }

  explicit __normal_iterator(const _Iterator& __i) : _M_current(__i) { }


  template<typename _Iter>
  inline __normal_iterator(const __normal_iterator<_Iter, _Container>& __i)
    : _M_current(__i.base()) { }


  reference
  operator*() const { return *_M_current; }

  pointer
  operator->() const { return _M_current; }

  normal_iterator_type&
  operator++() { ++_M_current; return *this; }

  normal_iterator_type
  operator++(int) { return __normal_iterator(_M_current++); }


  normal_iterator_type&
  operator--() { --_M_current; return *this; }

  normal_iterator_type
  operator--(int) { return __normal_iterator(_M_current--); }


  reference
  operator[](const difference_type& __n) const
  { return _M_current[__n]; }

  normal_iterator_type&
  operator+=(const difference_type& __n)
  { _M_current += __n; return *this; }

  normal_iterator_type
  operator+(const difference_type& __n) const
  { return __normal_iterator(_M_current + __n); }

  normal_iterator_type&
  operator-=(const difference_type& __n)
  { _M_current -= __n; return *this; }

  normal_iterator_type
  operator-(const difference_type& __n) const
  { return __normal_iterator(_M_current - __n); }

  difference_type
  operator-(const normal_iterator_type& __i) const
  { return _M_current - __i._M_current; }

  const _Iterator&
  base() const { return _M_current; }
};



template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool
operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
           const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __lhs.base() == __rhs.base(); }

template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool
operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
           const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__lhs == __rhs); }



template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool
operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
          const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __lhs.base() < __rhs.base(); }

template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool
operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
          const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return __rhs < __lhs; }

template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool
operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
           const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__rhs < __lhs); }

template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool
operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
           const __normal_iterator<_IteratorR, _Container>& __rhs)
{ return !(__lhs < __rhs); }

template<typename _Iterator, typename _Container>
inline __normal_iterator<_Iterator, _Container>
operator+(typename __normal_iterator<_Iterator, _Container>::difference_type __n,
          const __normal_iterator<_Iterator, _Container>& __i)
{ return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }

}
# 81 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3
# 1 "/usr/local/gcc-3.0.1/include/g++-v3/bits/concept_check.h" 1 3
# 82 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 2 3

namespace std
{



template <class _ForwardIter1, class _ForwardIter2, class _Tp>
inline void __iter_swap(_ForwardIter1 __a, _ForwardIter2 __b, _Tp*)
{
  _Tp __tmp = *__a;
  *__a = *__b;
  *__b = __tmp;
}

template <class _ForwardIter1, class _ForwardIter2>
inline void iter_swap(_ForwardIter1 __a, _ForwardIter2 __b)
{

                                                                             ;
                                                                             ;
                                                             ;


                                                             ;



  __iter_swap(__a, __b, __value_type(__a));
}

template <class _Tp>
inline void swap(_Tp& __a, _Tp& __b)
{

                                                         ;

  _Tp __tmp = __a;
  __a = __b;
  __b = __tmp;
}







template <class _Tp>
inline const _Tp& min(const _Tp& __a, const _Tp& __b) {

                                                              ;

  if (__b < __a) return __b; return __a;
}

template <class _Tp>
inline const _Tp& max(const _Tp& __a, const _Tp& __b) {

                                                              ;

  if (__a < __b) return __b; return __a;
}

template <class _Tp, class _Compare>
inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) {

  if (__comp(__b, __a)) return __b; return __a;
}

template <class _Tp, class _Compare>
inline const _Tp& max(const _Tp& __a, const _Tp& __b, _Compare __comp) {

  if (__comp(__a, __b)) return __b; return __a;
}
# 166 "/usr/local/gcc-3.0.1/include/g++-v3/bits/stl_algobase.h" 3
template <class _InputIter, class _OutputIter, class _Distance>
inline _OutputIter __copy(_InputIter __first, _InputIter __last,
                          _OutputIter __result,
                          input_iterator_tag, _Distance*)
{
  for ( ; __first != __last; ++__result, ++__first)
    *__result = *__first;
  return __result;
}

template <class _RandomAccessIter, class _OutputIter, class _Distance>
inline _OutputIter
__copy(_RandomAccessIter __first, _RandomAccessIter __last,
       _OutputIter __result, random_access_iterator_tag, _Distance*)
{
  for (_Distance __n = __last - __first; __n > 0; --__n) {
    *__result = *__first;
    ++__first;
    ++__result;
  }
  return __result;
}

template <class _Tp>
inline _Tp*
__copy_trivial(const _Tp* __first, const _Tp* __last, _Tp* __result)
{
  memmove(__result, __first, sizeof(_Tp) * (__last - __first));
  return __result + (__last - __first);
}


template <class _InputIter, class _OutputIter>
inline _OutputIter __copy_aux2(_InputIter __first, _InputIter __last,
                               _OutputIter __result, __false_type)
{
  return __copy(__first, __last, __result,
                __iterator_category(__first),
                __distance_type(__first));
}

template <class _InputIter, class _OutputIter>
inline _OutputIter __copy_aux2(_InputIter __first, _InputIter __last,
                               _OutputIter __result, __true_type)
{
  return __copy(__first, __last, __result,
                __iterator_category(__first),
                __distance_type(__first));
}

template <class _Tp>
inline _Tp* __copy_aux2(_Tp* __first, _Tp* __last, _Tp* __result,
                        __true_type)
{
  return __copy_trivial(__first, __last, __result);
}

template <class _Tp>
inline _Tp* __copy_aux2(const _Tp* __first, const _Tp* __last, _Tp* __result,
                        __true_type)
{
  return __copy_trivial(__first, __last, __result);
}


template <class _InputIter, class _OutputIter, class _Tp>
inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last,
                              _OutputIter __result, _Tp*)
{
  typedef typename __type_traits<_Tp>::has_trivial_assignment_operator
          _Trivial;
  return __copy_aux2(__first, __last, __result, _Trivial());
}

template<typename _InputIter, typename _OutputIter>
inline _OutputIter __copy_ni2(_InputIter __first, _InputIter __last,
                               _OutputIter __result, __true_type)
{
  return _OutputIter(__copy_aux(__first, __last, __result.base(),
                                __value_type(__first)));
}

template<typename _InputIter, typename _OutputIter>
inline _OutputIter __copy_ni2(_InputIter __first, _InputIter __last,
                              _OutputIter __result, __false_type)
{
  return __copy_aux(__first, __last, __result, __value_type(__first));
}

template<typename _InputIter, typename _OutputIter>
inline _OutputIter __copy_ni1(_InputIter __first, _InputIter __last,
                               _OutputIter __result, __true_type)
{
  typedef typename _Is_normal_iterator<_OutputIter>::_Normal __Normal;
  return __copy_ni2(__first.base(), __last.base(), __result, __Normal());
}

template<typename _InputIter, typename _OutputIter>
inline _OutputIter __copy_ni1(_InputIter __first, _InputIter __last,
                               _OutputIter __result, __false_type)
{
  typedef typename _Is_normal_iterator<_OutputIter>::_Normal __Normal;
  return __copy_ni2(__first, __last, __result, __Normal());
}

template <class _InputIter, class _OutputIter>
inline _OutputIter copy(_InputIter __first, _InputIter __last,
                        _OutputIter __result)
{

                                                                ;
                                                          ;


   typedef typename _Is_normal_iterator<_InputIter>::_Normal __Normal;
   return __copy_ni1(__first, __last, __result, __Normal());
}




template <class _BidirectionalIter1, class _BidirectionalIter2,
          class _Distance>
inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first,
                                           _BidirectionalIter1 __last,
                                           _BidirectionalIter2 __result,
                                           bidirectional_iterator_tag,
                                           _Distance*)
{
  while (__first != __last)
    *--__result = *--__last;
  return __result;
}

template <class _RandomAccessIter, class _BidirectionalIter, class _Distance>
inline _BidirectionalIter __copy_backward(_RandomAccessIter __first,
                                          _RandomAccessIter __last,
                                          _BidirectionalIter __result,
                                          random_access_iterator_tag,
                                          _Distance*)
{
  for (_Distance __n = __last - __first; __n > 0; --__n)
    *--__result = *--__last;
  return __result;
}







template <class _BidirectionalIter1, class _BidirectionalIter2,
          class _BoolType>
struct __copy_backward_dispatch
{
  typedef typename iterator_traits<_BidirectionalIter1>::iterator_category
          _Cat;
  typedef typename iterator_traits<_BidirectionalIter1>::difference_type
          _Distance;

  static _BidirectionalIter2 copy(_BidirectionalIter1 __first,
                                  _BidirectionalIter1 __last,
                                  _BidirectionalIter2 __result) {
    return __copy_backward(__first, __last, __result, _Cat(), (_Distance*) 0);
  }
};

template <class _Tp>
struct __copy_backward_dispatch<_Tp*, _Tp*, __true_type>
{
  static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {
    const ptrdiff_t _Num = __last - __first;
    memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
    return __result - _Num;
  }
};

template <class _Tp>
struct __copy_backward_dispatch<const _Tp*, _Tp*, __true_type>
{
  static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {
    return __copy_backward_dispatch<_Tp*, _Tp*, __true_type>
      ::copy(__first, __last, __result);
  }
};

template <class _BI1, class _BI2>
inline _BI2 __copy_backward_aux(_BI1 __first, _BI1 __last, _BI2 __result) {
  typedef typename __type_traits<typename iterator_traits<_BI2>::value_type>
                        ::has_trivial_assignment_operator
          _Trivial;
  return __copy_backward_dispatch<_BI1, _BI2, _Trivial>
              ::copy(__first, __last, __result);
}

template <typename _BI1, typename _BI2>
inline _BI2 __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last,
                                                   _BI2 __result, __true_type) {
  return _BI2(__copy_backward_aux(__first, __last, __result.base()));
}

template <typename _BI1, typename _BI2>
inline _BI2 __copy_backward_output_normal_iterator(_BI1 __first, _BI1 __last,
                                                   _BI2 __result, __false_type){
  return __copy_backward_aux(__first, __last, __result);
}

template <typename _BI1, typename _BI2>
inline _BI2 __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last,
                                                  _BI2 __result, __true_type) {
  typedef typename _Is_normal_iterator<_BI2>::_Normal __Normal;
  return __copy_backward_output_normal_iterator(__first.base(), __last.base(),
                                                __result, __Normal());
}

template <typename _BI1, typename _BI2>
inline _BI2 __copy_backward_input_normal_iterator(_BI1 __first, _BI1 __last,
                                                  _BI2 __result, __false_type) {
  typedef typename _Is_normal_iterator<_BI2>::_Normal __Normal;
  return __copy_backward_output_normal_iterator(__first, __last, __result,
                                                __Normal());
}

template <typename _BI1, typename _BI2>
inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
{

                                                                  ;
                                                                          ;
                                                    ;



  typedef typename _Is_normal_iterator<_BI1>::_Normal __Normal;
  return __copy_backward_input_normal_iterator(__first, __last, __result,
                                               __Normal());
}




template <class _InputIter, class _Size, class _OutputIter>
pair<_InputIter, _OutputIter> __copy_n(_InputIter __first, _Size __count,
                                       _OutputIter __result,
                                       input_iterator_tag) {
  for ( ; __count > 0; --__count) {
    *__result = *__first;
    ++__first;
    ++__result;
  }
  return pair<_InputIter, _OutputIter>(__first, __result);
}

template <class _RAIter, class _Size, class _OutputIter>
inline pair<_RAIter, _OutputIter>
__copy_n(_RAIter __first, _Size __count,
         _OutputIter __result,
         random_access_iterator_tag) {
  _RAIter __last = __first + __count;
  return pair<_RAIter, _OutputIter>(__last, copy(__first, __last, __result));
}

template <class _InputIter, class _Size, class _OutputIter>
inline pair<_InputIter, _OutputIter>
__copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
  return __copy_n(__first, __count, __result,
                  __iterator_category(__first));
}

template <class _InputIter, class _Size, class _OutputIter>
inline pair<_InputIter, _OutputIter>
copy_n(_InputIter __first, _Size __count, _OutputIter __result)
{

                                                                ;
                                                          ;


  return __copy_n(__first, __count, __result);
}





template <class _ForwardIter, class _Tp>
void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __value)
{

                                                                            ;

  for ( ; __first != __last; ++__first)
    *__first = __value;
}

template <class _OutputIter, class _Size, class _Tp>
_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __value)
{

                                                                      ;

  for ( ; __n > 0; --__n, ++__first)
    *__first = __value;
  return __first;
}



inline void fill(unsigned char* __first, unsigned char* __last,
                 const unsigned char& __c)
{
  unsigned char __tmp = __c;
  memset(__first, __tmp, __last - __first);
}

inline void fill(signed char* __first, signed char* __last,
                 const signed char& __c)
{
  signed char __tmp = __c;
  memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
}

inline void fill(char* __first, char* __last, const char& __c)
{
  char __tmp = __c;
  memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
}

template <class _Size>
inline unsigned char* fill_n(unsigned char* __first, _Size __n,
                             const unsigned char& __c)
{
  fill(__first, __first + __n, __c);
  return __first + __n;
}

template <class _Size>
inline signed char* fill_n(char* __first, _Size __n,
                           const signed char& __c)
{
  fill(__first, __first + __n, __c);
  return __first + __n;
}

template <class _Size>
inline char* fill_n(char* __first, _Size __n, const char& __c)
{
  fill(__first, __first + __n, __c);
  return __first + __n;
}





template <class _InputIter1, class _InputIter2>
pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
                                        _InputIter1 __last1,
                                        _InputIter2 __first2)
{

                                                                 ;
                                                                 ;
                                                           ;

                                                           ;


  while (__first1 != __last1 && *__first1 == *__first2) {
    ++__first1;
    ++__first2;
  }
  return pair<_InputIter1, _InputIter