function nodes = crossovers(n, assym, bcv, lexicographicallyLower, palindromeQ)

valvec = getValvec(n);
assymv = assym*valvec;

adj0 = [assym(:,2:end), zeros(size(assym,1),1)];
adj0v = adj0*valvec;

adj1 = [assym(:,2:end), ones(size(assym,1),1)];
adj1v = adj1*valvec;

nodes = [];

for i=1:length(assymv),
	ci = find(adj0v(i)==bcv);
	me = assym(i,:);
	myOpp = adj0(i,end:-1:1);
	meToMyOpp = binaryRowEqual(me, myOpp);
	if (~meToMyOpp & ~lexicographicallyLower(ci) & ~palindromeQ(ci)),
		%[assym(i,:), adj0(i,:), bcv(ci)]
		nodes = [nodes; i];
	end

	ci = find(adj1v(i)==bcv);
	me = assym(i,:);
	myOpp = adj1(i,end:-1:1);
	meToMyOpp = binaryRowEqual(me, myOpp);
	if (~meToMyOpp & ~lexicographicallyLower(ci) & ~palindromeQ(ci)),
		%[assym(i,:), adj1(i,:), bcv(ci)]
		nodes = [nodes; i];
	end
end

nodes = unique(nodes);
