#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main(){
srand(2349082);
ios_base::sync_with_stdio(0);
cin.tie(0);
int nClauses, nVariables;
cin >> nClauses >> nVariables;
vector<vector<int> > instance(nClauses, vector<int>(7));
set<int> relevantset;
for(int i = 0; i < nClauses; i++){
for(int j = 0; j < 7; j++){
cin >> instance[i][j];
relevantset.insert(abs(instance[i][j]) - 1);
}
}
vector<int> relevant(relevantset.begin(), relevantset.end());
vector<bool> assignment(nVariables);
for(int iter = 0; iter < 300; iter++){
for(int i = 0; i < relevant.size(); i++){
assignment[relevant[i]] = rand() % 2;
}
for(int clause = 0; clause < nClauses; clause++){
bool good = false;
for(int i = 0; i < 7; i++){
int variable = instance[clause][i];
if((variable > 0 && assignment[abs(variable)-1] == true)
|| (variable < 0 && assignment[abs(variable)-1] == false))
good = true;
}
}
if(!good) continue;
// Success
cout << "SAT" << endl;
for(int i = 0; i < nVariables; i++){
cout << assignment[i];
}
cout << endl;
return 0;
}
cout << "UNSAT" << endl;
}