1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5
6 struct A {
7 int v;
8 A() { }
9 A(int n):v(n) { };
10 bool operator<(const A & a) const {
11 return v < a.v;
12 }
13 };
14 template <class T>
15 struct FilterClass{
16 T m,n;
17 FilterClass(T _m,T _n):m(_m),n(_n){}
18 bool operator()(T p){
19 if(p < n && m < p)
20 return true;
21 return false;
22 }
23 };
24
25 template <class T>
26 void Print(T s,T e)
27 {
28 for(;s!=e; ++s)
29 cout << *s << ",";
30 cout << endl;
31 }
32 template <class T1, class T2,class T3>
33 T2 Filter( T1 s,T1 e, T2 s2, T3 op)
34 {
35 for(;s != e; ++s) {
36 if( op(*s)) {
37 * s2 = * s;
38 ++s2;
39 }
40 }
41 return s2;
42 }
43
44 ostream & operator <<(ostream & o,A & a)
45 {
46 o << a.v;
47 return o;
48 }
49 vector<int> ia;
50 vector<A> aa;
51 int main()
52 {
53 int m,n;
54 while(cin >> m >> n) {
55 ia.clear();
56 aa.clear();
57 int k,tmp;
58 cin >> k;
59 for(int i = 0;i < k; ++i) {
60 cin >> tmp;
61 ia.push_back(tmp);
62 aa.push_back(tmp);
63 }
64 vector<int> ib(k);
65 vector<A> ab(k);
66 vector<int>::iterator p = Filter(ia.begin(),ia.end(),ib.begin(),FilterClass<int>(m,n));
67 Print(ib.begin(),p);
68 vector<A>::iterator pp = Filter(aa.begin(),aa.end(),ab.begin(),FilterClass<A>(m,n));
69 Print(ab.begin(),pp);
70
71 }
72 return 0;
73 }