#include <iostream>
#include <map>
#include <queue>
#include <vector>
using namespace std;
int red=0;
int blue=1;
struct E{
int color,r,height;
};
struct E2{
int color;
int commit;
int len;
int height;
int no;
int count;
};
struct E3{
int right,commit;
bool operator<(const E3& e3)const{
if(right!=e3.right)return right<e3.right;
return commit<e3.commit;
}
};
map<E3,long long int> perm;
vector<E> vs;
queue<E2> qs;
int main() {
int r1=1;
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
E e1;
cin>>e1.height;
e1.color=red;
e1.r=r1;
vs.push_back(e1);
r1*=2;
}
for(int i=0;i<m;i++){
E e1;
cin>>e1.height;
e1.color=blue;
e1.r=r1;
vs.push_back(e1);
r1*=2;
}
for(int i=0;i<vs.size();i++){
E e1=vs[i];
E2 e2;
E3 e3;
e3.right=i;
e3.commit=e1.r;
perm[e3]=1;
e2.color=e1.color;
e2.commit=e1.r;
e2.len=1;
e2.height=e1.height;
e2.no=i;
e2.count=1;
qs.push(e2);
}
long long int ans=0;
while(qs.size()>0){
E2 e2=qs.front();
qs.pop();
if(e2.count==n+m){
if(1<e2.len){
E3 e3;
e3.right=e2.no;
e3.commit=e2.commit;
ans+=perm[e3];
cout<<e3.right<<" "<<e3.commit<<" "<<e2.len<<" "<<perm[e3]<<endl;
}
continue;
}
for(int i=0;i<n+m;i++){
E e1=vs[i];
if((e2.commit & e1.r)>0)continue;
E2 e2next;
e2next.commit=e2.commit+e1.r;
e2next.height=e1.height;
e2next.color=e1.color;
e2next.no=i;
e2next.count=e2.count+1;
E3 e3now,e3next;
e3now.right=e2.no;
e3now.commit=e2.commit;
e3next.right=i;
e3next.commit=e2next.commit;
if(e2.color==e1.color && e2.height<e1.height){
e2next.len=e2.len+1;
if(perm.find(e3next)==perm.end()){
qs.push(e2next);
perm[e3next]=0;
}
perm[e3next]+=perm[e3now];
}else if(1<e2.len && e2.height>e1.height && e2.color!=e1.color){
e2next.len=1;
if(perm.find(e3next)==perm.end()){
qs.push(e2next);
perm[e3next]=0;
}
perm[e3next]+=perm[e3now];
}
}
}
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDx2ZWN0b3I+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgcmVkPTA7CmludCBibHVlPTE7CgpzdHJ1Y3QgRXsKCWludCBjb2xvcixyLGhlaWdodDsKfTsKc3RydWN0IEUyewoJaW50IGNvbG9yOwoJaW50IGNvbW1pdDsKCWludCBsZW47CglpbnQgaGVpZ2h0OwoJaW50IG5vOwoJaW50IGNvdW50Owp9OwpzdHJ1Y3QgRTN7CglpbnQgcmlnaHQsY29tbWl0OwoJYm9vbCBvcGVyYXRvcjwoY29uc3QgRTMmIGUzKWNvbnN0ewoJCWlmKHJpZ2h0IT1lMy5yaWdodClyZXR1cm4gcmlnaHQ8ZTMucmlnaHQ7CgkJcmV0dXJuIGNvbW1pdDxlMy5jb21taXQ7Cgl9Cn07CgptYXA8RTMsbG9uZyBsb25nIGludD4gcGVybTsKdmVjdG9yPEU+IHZzOwpxdWV1ZTxFMj4gcXM7CmludCBtYWluKCkgewoJaW50IHIxPTE7CglpbnQgbixtOwoJY2luPj5uPj5tOwoJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJRSBlMTsKCQljaW4+PmUxLmhlaWdodDsKCQllMS5jb2xvcj1yZWQ7CgkJZTEucj1yMTsKCQl2cy5wdXNoX2JhY2soZTEpOwoJCXIxKj0yOwoJfQoJZm9yKGludCBpPTA7aTxtO2krKyl7CgkJRSBlMTsKCQljaW4+PmUxLmhlaWdodDsKCQllMS5jb2xvcj1ibHVlOwoJCWUxLnI9cjE7CgkJdnMucHVzaF9iYWNrKGUxKTsKCQlyMSo9MjsKCX0KCWZvcihpbnQgaT0wO2k8dnMuc2l6ZSgpO2krKyl7CgkJRSBlMT12c1tpXTsKCQlFMiBlMjsKCQlFMyBlMzsKCQllMy5yaWdodD1pOwoJCWUzLmNvbW1pdD1lMS5yOwoJCXBlcm1bZTNdPTE7CgkJZTIuY29sb3I9ZTEuY29sb3I7CgkJZTIuY29tbWl0PWUxLnI7CgkJZTIubGVuPTE7CgkJZTIuaGVpZ2h0PWUxLmhlaWdodDsKCQllMi5ubz1pOwoJCWUyLmNvdW50PTE7CgkJcXMucHVzaChlMik7Cgl9Cglsb25nIGxvbmcgaW50IGFucz0wOwoJd2hpbGUocXMuc2l6ZSgpPjApewoJCUUyIGUyPXFzLmZyb250KCk7CgkJcXMucG9wKCk7CgkJaWYoZTIuY291bnQ9PW4rbSl7CgkJCWlmKDE8ZTIubGVuKXsKCQkJCUUzIGUzOwoJCQkJZTMucmlnaHQ9ZTIubm87CgkJCQllMy5jb21taXQ9ZTIuY29tbWl0OwoJCQkJYW5zKz1wZXJtW2UzXTsKCQkJCWNvdXQ8PGUzLnJpZ2h0PDwiICI8PGUzLmNvbW1pdDw8IiAiPDxlMi5sZW48PCIgIjw8cGVybVtlM108PGVuZGw7CgkJCX0KCQkJY29udGludWU7CgkJfQoJCQoJCWZvcihpbnQgaT0wO2k8bittO2krKyl7CgkJCUUgZTE9dnNbaV07CgkJCWlmKChlMi5jb21taXQgJiBlMS5yKT4wKWNvbnRpbnVlOwoJCQlFMiBlMm5leHQ7CgkJCWUybmV4dC5jb21taXQ9ZTIuY29tbWl0K2UxLnI7CgkJCWUybmV4dC5oZWlnaHQ9ZTEuaGVpZ2h0OwoJCQllMm5leHQuY29sb3I9ZTEuY29sb3I7CgkJCWUybmV4dC5ubz1pOwoJCQllMm5leHQuY291bnQ9ZTIuY291bnQrMTsKCQkJRTMgZTNub3csZTNuZXh0OwoJCQllM25vdy5yaWdodD1lMi5ubzsKCQkJZTNub3cuY29tbWl0PWUyLmNvbW1pdDsKCQkJZTNuZXh0LnJpZ2h0PWk7CgkJCWUzbmV4dC5jb21taXQ9ZTJuZXh0LmNvbW1pdDsKCQkJCgkJCWlmKGUyLmNvbG9yPT1lMS5jb2xvciAmJiBlMi5oZWlnaHQ8ZTEuaGVpZ2h0KXsKCQkJCWUybmV4dC5sZW49ZTIubGVuKzE7CgkJCQlpZihwZXJtLmZpbmQoZTNuZXh0KT09cGVybS5lbmQoKSl7CgkJCQkJcXMucHVzaChlMm5leHQpOwoJCQkJCXBlcm1bZTNuZXh0XT0wOwoJCQkJfQoJCQkJcGVybVtlM25leHRdKz1wZXJtW2Uzbm93XTsKCQkJfWVsc2UgaWYoMTxlMi5sZW4gJiYgZTIuaGVpZ2h0PmUxLmhlaWdodCAmJiBlMi5jb2xvciE9ZTEuY29sb3IpewoJCQkJZTJuZXh0Lmxlbj0xOwoJCQkJaWYocGVybS5maW5kKGUzbmV4dCk9PXBlcm0uZW5kKCkpewoJCQkJCXFzLnB1c2goZTJuZXh0KTsKCQkJCQlwZXJtW2UzbmV4dF09MDsKCQkJCX0KCQkJCXBlcm1bZTNuZXh0XSs9cGVybVtlM25vd107CgkJCX0KCQl9Cgl9Cgljb3V0PDxhbnM8PGVuZGw7CglyZXR1cm4gMDsKfQ==