public GCSignal and(GCSignal a, GCSignal b) {
		Flag.sw.startGC();

		GCSignal res;
		if (a.isPublic() && b.isPublic())
			res = new GCSignal(a.v && b.v);
		else if (a.isPublic())
			res = a.v ? b : new GCSignal(false);
		else if (b.isPublic())
			res = b.v ? a : new GCSignal(false);
		else {
			++numOfAnds;
			res = new GCSignal(new byte[10]);
			receiveGTT();

			int i0 = a.getLSB();
			int i1 = b.getLSB();

			gb.dec(a, b, gid, gtt[i0][i1], res);
			gid++;
		}
		Flag.sw.stopGC();
		return res;
	}