#include <stdio.h>
#include <string.h>
#include<functional>
#include <queue>
#include <algorithm>
using namespace std;
const int maxn = 100050;
const int inf = 1<<30;
struct TwoSAT{
int n;;
vector<int>G[maxn<<1];
bool mark[maxn];
int S[maxn<<1],c;
bool dfs( int x )
{
if( mark[x^1] ) return false;
if( mark[x] ) return true;
mark[x] = true;
S[c++] = x;
for( int i = 0; i < G[x].size(); i ++ )
if( !dfs(G[x][i]) ) return false;
return true;
}
void init( int n ){
this->n = n;
for (int i = 0; i < n*2; i ++ ){
G[i].clear();
}
memset( mark,0,sizeof(mark) );
}
//x = xval or y = yval
void add_clause( int x,int xval,int y,int yval ){
x = x*2 + xval;
y = y*2 + yval;
G[x^1].push_back( y );
G[y^1].push_back( x );
}
bool solve(){
for( int i = 0; i < n*2; i += 2 ){
if( !mark[i] && !mark[i+1] ){
c = 0;
if( !dfs(i) ){
while( c > 0 ) mark[S[--c]] = false;
if( !dfs(i+1) ) return false;
}
}
}
return true;
}
};
int main()
{
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
return 0;
}