Index: /stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeProblem.cs
===================================================================
--- /stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeProblem.cs	(revision 13279)
+++ /stable/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeProblem.cs	(revision 13280)
@@ -26,4 +26,5 @@
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Data;
 using HeuristicLab.Optimization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
@@ -56,13 +57,24 @@
     }
 
-    public virtual void Analyze(ISymbolicExpressionTree[] trees, double[] qualities, ResultCollection results, IRandom random) {
-      var bestQuality = Maximization ? qualities.Max() : qualities.Min();
-      var bestIdx = Array.IndexOf(qualities, bestQuality);
-      var best = trees[bestIdx];
+    public virtual void Analyze(ISymbolicExpressionTree[] trees, double[] qualities, ResultCollection results,
+      IRandom random) {
+      if (!results.ContainsKey("Best Solution Quality")) {
+        results.Add(new Result("Best Solution Quality", typeof(DoubleValue)));
+      }
       if (!results.ContainsKey("Best Solution")) {
         results.Add(new Result("Best Solution", typeof(ISymbolicExpressionTree)));
       }
-      results["Best Solution"].Value = (IItem)best.Clone();
+
+      var bestQuality = Maximization ? qualities.Max() : qualities.Min();
+
+      if (results["Best Solution Quality"].Value == null ||
+          IsBetter(bestQuality, ((DoubleValue)results["Best Solution Quality"].Value).Value)) {
+        var bestIdx = Array.IndexOf(qualities, bestQuality);
+        var bestClone = (IItem)trees[bestIdx].Clone();
+        results["Best Solution"].Value = bestClone;
+        results["Best Solution Quality"].Value = new DoubleValue(bestQuality);
+      }
     }
+
     public sealed override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {
       Analyze(individuals.Select(ind => ind.SymbolicExpressionTree()).ToArray(), qualities, results, random);
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Interpreter.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Interpreter.cs	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Interpreter.cs	(revision 13280)
@@ -32,9 +32,8 @@
     public int FoodEaten { get; private set; }
     public BoolMatrix World { get; private set; }
-
     public ISymbolicExpressionTree Expression { get; private set; }
 
+    public int ElapsedTime { get; set; }
 
-    public int ElapsedTime { get; set; }
     private int currentDirection;
     private int currentAntLocationRow;
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Problem.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Problem.cs	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Problem.cs	(revision 13280)
@@ -22,5 +22,4 @@
 using System;
 using System.Diagnostics.Contracts;
-using System.Drawing.Text;
 using System.Linq;
 using HeuristicLab.Common;
@@ -38,5 +37,4 @@
   [StorableClass]
   public sealed class Problem : SymbolicExpressionTreeProblem, IStorableContent {
-    public string Filename { get; set; }
 
     #region constant for default world (Santa Fe)
@@ -104,4 +102,18 @@
     }
 
+    #region item cloning and persistence
+    // persistence
+    [StorableConstructor]
+    private Problem(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() { }
+
+    // cloning 
+    private Problem(Problem original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Problem(this, cloner);
+    }
+    #endregion
+
     public Problem()
       : base() {
@@ -114,5 +126,5 @@
       g.AddSymbols(new string[] { "IfFoodAhead", "Prog2" }, 2, 2);
       g.AddSymbols(new string[] { "Prog3" }, 3, 3);
-      g.AddTerminalSymbols(new string[] { "Left", "Right", "Move" });
+      g.AddTerminalSymbols(new string[] { "Move", "Left", "Right" });
       base.Encoding = new SymbolicExpressionTreeEncoding(g, 20, 10);
     }
@@ -137,19 +149,4 @@
     }
 
-    // persistence
-    [StorableConstructor]
-    private Problem(bool deserializing) : base(deserializing) { }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-    }
-
-    // cloning 
-    private Problem(Problem original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Problem(this, cloner);
-    }
-
     #region helpers
     private bool[,] ToBoolMatrix(char[][] ch) {
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Trail.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Trail.cs	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/ArtificialAnt/Trail.cs	(revision 13280)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Drawing;
 using HeuristicLab.Common;
@@ -54,4 +53,5 @@
     }
 
+    #region item cloning and persistence
     [StorableConstructor]
     private Solution(bool deserializing) : base(deserializing) { }
@@ -70,4 +70,5 @@
       return new Solution(this, cloner);
     }
+    #endregion
   }
 }
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/BasicSymbolicRegression/Problem.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/BasicSymbolicRegression/Problem.cs	(revision 13280)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/BasicSymbolicRegression/Problem.cs	(revision 13280)
@@ -0,0 +1,195 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Problems.Instances;
+
+
+namespace HeuristicLab.Problems.GeneticProgramming.BasicSymbolicRegression {
+  [Item("Koza-style Symbolic Regression", "An implementation of symbolic regression without bells-and-whistles. Use \"Symbolic Regression Problem (single-objective)\" if you want to use all features.")]
+  [Creatable(CreatableAttribute.Categories.GeneticProgrammingProblems, Priority = 900)]
+  [StorableClass]
+  public sealed class Problem : SymbolicExpressionTreeProblem, IRegressionProblem, IProblemInstanceConsumer<IRegressionProblemData>, IProblemInstanceExporter<IRegressionProblemData> {
+
+    #region parameter names
+    private const string ProblemDataParameterName = "ProblemData";
+    #endregion
+
+    #region Parameter Properties
+    IParameter IDataAnalysisProblem.ProblemDataParameter { get { return ProblemDataParameter; } }
+
+    public IValueParameter<IRegressionProblemData> ProblemDataParameter {
+      get { return (IValueParameter<IRegressionProblemData>)Parameters[ProblemDataParameterName]; }
+    }
+    #endregion
+
+    #region Properties
+    public IRegressionProblemData ProblemData {
+      get { return ProblemDataParameter.Value; }
+      set { ProblemDataParameter.Value = value; }
+    }
+    IDataAnalysisProblemData IDataAnalysisProblem.ProblemData { get { return ProblemData; } }
+    #endregion
+
+    public event EventHandler ProblemDataChanged;
+
+    public override bool Maximization {
+      get { return true; }
+    }
+
+    #region item cloning and persistence
+    // persistence
+    [StorableConstructor]
+    private Problem(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEventHandlers();
+    }
+
+    // cloning 
+    private Problem(Problem original, Cloner cloner)
+      : base(original, cloner) {
+      RegisterEventHandlers();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) { return new Problem(this, cloner); }
+    #endregion
+
+    public Problem()
+      : base() {
+      Parameters.Add(new ValueParameter<IRegressionProblemData>(ProblemDataParameterName, "The data for the regression problem", new RegressionProblemData()));
+
+      var g = new SimpleSymbolicExpressionGrammar(); // empty grammar is replaced in UpdateGrammar()
+      base.Encoding = new SymbolicExpressionTreeEncoding(g, 100, 17);
+
+      UpdateGrammar();
+      RegisterEventHandlers();
+    }
+
+
+    public override double Evaluate(ISymbolicExpressionTree tree, IRandom random) {
+      // Doesn't use classes from HeuristicLab.Problems.DataAnalysis.Symbolic to make sure that the implementation can be fully understood easily.
+      // HeuristicLab.Problems.DataAnalysis.Symbolic would already provide all the necessary functionality (esp. interpreter) but at a much higher complexity.
+      // Another argument is that we don't need a reference to HeuristicLab.Problems.DataAnalysis.Symbolic
+
+      var problemData = ProblemData;
+      var rows = ProblemData.TrainingIndices.ToArray();
+      var target = problemData.Dataset.GetDoubleValues(problemData.TargetVariable, rows);
+      var predicted = Interpret(tree, problemData.Dataset, rows);
+
+      OnlineCalculatorError errorState;
+      var r = OnlinePearsonsRCalculator.Calculate(target, predicted, out errorState);
+      if (errorState != OnlineCalculatorError.None) r = 0;
+      return r * r;
+    }
+
+    private IEnumerable<double> Interpret(ISymbolicExpressionTree tree, IDataset dataset, IEnumerable<int> rows) {
+      // skip programRoot and startSymbol
+      return InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), dataset, rows);
+    }
+
+    private IEnumerable<double> InterpretRec(ISymbolicExpressionTreeNode node, IDataset dataset, IEnumerable<int> rows) {
+      Func<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode, Func<double, double, double>, IEnumerable<double>> binaryEval =
+        (left, right, f) => InterpretRec(left, dataset, rows).Zip(InterpretRec(right, dataset, rows), f);
+
+      switch (node.Symbol.Name) {
+        case "+": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x + y);
+        case "*": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x * y);
+        case "-": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x - y);
+        case "%": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => y.IsAlmost(0.0) ? 0.0 : x / y); // protected division
+        default: {
+            double erc;
+            if (double.TryParse(node.Symbol.Name, out erc)) {
+              return rows.Select(_ => erc);
+            } else {
+              // assume that this is a variable name
+              return dataset.GetDoubleValues(node.Symbol.Name, rows);
+            }
+          }
+      }
+    }
+
+
+    #region events
+    private void RegisterEventHandlers() {
+      ProblemDataParameter.ValueChanged += new EventHandler(ProblemDataParameter_ValueChanged);
+      if (ProblemDataParameter.Value != null) ProblemDataParameter.Value.Changed += new EventHandler(ProblemData_Changed);
+    }
+
+    private void ProblemDataParameter_ValueChanged(object sender, EventArgs e) {
+      ProblemDataParameter.Value.Changed += new EventHandler(ProblemData_Changed);
+      OnProblemDataChanged();
+      OnReset();
+    }
+
+    private void ProblemData_Changed(object sender, EventArgs e) {
+      OnReset();
+    }
+
+    private void OnProblemDataChanged() {
+      UpdateGrammar();
+
+      var handler = ProblemDataChanged;
+      if (handler != null) handler(this, EventArgs.Empty);
+    }
+
+    private void UpdateGrammar() {
+      // whenever ProblemData is changed we create a new grammar with the necessary symbols
+      var g = new SimpleSymbolicExpressionGrammar();
+      g.AddSymbols(new[] { "+", "*", "%", "-" }, 2, 2); // % is protected division 1/0 := 0
+
+      foreach (var variableName in ProblemData.AllowedInputVariables)
+        g.AddTerminalSymbol(variableName);
+
+      // generate ephemeral random consts in the range [-10..+10[ (2*number of variables)
+      var rand = new System.Random();
+      for (int i = 0; i < ProblemData.AllowedInputVariables.Count() * 2; i++) {
+        string newErcSy;
+        do {
+          newErcSy = string.Format("{0:F2}", rand.NextDouble() * 20 - 10);
+        } while (g.Symbols.Any(sy => sy.Name == newErcSy)); // it might happen that we generate the same constant twice
+        g.AddTerminalSymbol(newErcSy);
+      }
+
+      Encoding.Grammar = g;
+    }
+    #endregion
+
+    #region Import & Export
+    public void Load(IRegressionProblemData data) {
+      Name = data.Name;
+      Description = data.Description;
+      ProblemData = data;
+    }
+
+    public IRegressionProblemData Export() {
+      return ProblemData;
+    }
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Boolean/EvenParityProblem.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Boolean/EvenParityProblem.cs	(revision 13280)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Boolean/EvenParityProblem.cs	(revision 13280)
@@ -0,0 +1,153 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+
+namespace HeuristicLab.Problems.GeneticProgramming.Boolean {
+  [Item("Even Parity Problem", "The Boolean even parity genetic programming problem. See Koza, 1992, page 529 section 20.2 Symbolic Regression of Even-Parity Functions")]
+  [Creatable(CreatableAttribute.Categories.GeneticProgrammingProblems, Priority = 900)]
+  [StorableClass]
+  public sealed class EvenParityProblem : SymbolicExpressionTreeProblem {
+
+    #region parameter names
+    private const string NumberOfBitsParameterName = "NumberOfBits";
+    #endregion
+
+    #region Parameter Properties
+    public IFixedValueParameter<IntValue> NumberOfBitsParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters[NumberOfBitsParameterName]; }
+    }
+    #endregion
+
+    #region Properties
+    public int NumberOfBits {
+      get { return NumberOfBitsParameter.Value.Value; }
+      set { NumberOfBitsParameter.Value.Value = value; }
+    }
+    #endregion
+
+    public override bool Maximization {
+      get { return true; }
+    }
+
+    #region item cloning and persistence
+    // persistence
+    [StorableConstructor]
+    private EvenParityProblem(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEventHandlers();
+    }
+
+    // cloning 
+    private EvenParityProblem(EvenParityProblem original, Cloner cloner)
+      : base(original, cloner) {
+      RegisterEventHandlers();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new EvenParityProblem(this, cloner);
+    }
+    #endregion
+
+    public EvenParityProblem()
+      : base() {
+      Parameters.Add(new FixedValueParameter<IntValue>(NumberOfBitsParameterName, "The number of bits for the input parameter for the even parity function", new IntValue(4)));
+
+      var g = new SimpleSymbolicExpressionGrammar(); // will be replaced in update grammar
+      Encoding = new SymbolicExpressionTreeEncoding(g, 100, 17);
+
+      UpdateGrammar();
+      RegisterEventHandlers();
+    }
+
+    private void UpdateGrammar() {
+      var g = new SimpleSymbolicExpressionGrammar();
+      g.AddSymbols(new[] { "AND", "OR", "NAND", "NOR" }, 2, 2); // see Koza, 1992, page 529 section 20.2 Symbolic Regression of Even-Parity Functions
+
+      // add one terminal symbol for each bit
+      for (int i = 0; i < NumberOfBits; i++)
+        g.AddTerminalSymbol(string.Format("{0}", i));
+
+      Encoding.Grammar = g;
+
+      BestKnownQuality = Math.Pow(2, NumberOfBits); // this is a benchmark problem (the best achievable quality is known for a given number of bits)
+    }
+
+
+    public override double Evaluate(ISymbolicExpressionTree tree, IRandom random) {
+      if (NumberOfBits <= 0) throw new NotSupportedException("Number of bits must be larger than zero.");
+      if (NumberOfBits > 10) throw new NotSupportedException("Even parity does not support problems with number of bits > 10.");
+      var bs = Enumerable.Range(0, (int)Math.Pow(2, NumberOfBits));
+      var targets = bs.Select(b => CalcTarget(b, NumberOfBits));
+      var pred = Interpret(tree, bs);
+      return targets.Zip(pred, (t, p) => t == p ? 1 : 0).Sum(); // count number of correct predictions
+    }
+
+    private static bool CalcTarget(int b, int numBits) {
+      bool res = GetBits(b, 0);
+      for (byte i = 1; i < numBits; i++)
+        res = res ^ GetBits(b, i); // XOR
+      return res;
+    }
+
+    private static IEnumerable<bool> Interpret(ISymbolicExpressionTree tree, IEnumerable<int> bs) {
+      // skip programRoot and startSymbol
+      return InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), bs);
+    }
+
+    private static IEnumerable<bool> InterpretRec(ISymbolicExpressionTreeNode node, IEnumerable<int> bs) {
+      Func<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode, Func<bool, bool, bool>, IEnumerable<bool>> binaryEval =
+        (left, right, f) => InterpretRec(left, bs).Zip(InterpretRec(right, bs), f);
+
+      switch (node.Symbol.Name) {
+        case "AND": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x & y);
+        case "OR": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x | y);
+        case "NAND": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => !(x & y));
+        case "NOR": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => !(x | y));
+        default: {
+            byte bitPos;
+            if (byte.TryParse(node.Symbol.Name, out bitPos)) {
+              return bs.Select(b => GetBits(b, bitPos));
+            } else throw new NotSupportedException(string.Format("Found unexpected symbol {0}", node.Symbol.Name));
+          }
+      }
+    }
+
+    private static bool GetBits(int b, byte bitPos) {
+      return (b & (1 << bitPos)) != 0;
+    }
+
+    #region events
+    private void RegisterEventHandlers() {
+      NumberOfBitsParameter.Value.ValueChanged += (sender, args) => UpdateGrammar();
+    }
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Boolean/MultiplexerProblem.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Boolean/MultiplexerProblem.cs	(revision 13280)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Boolean/MultiplexerProblem.cs	(revision 13280)
@@ -0,0 +1,199 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.Contracts;
+using System.Linq;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Parameters;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+
+namespace HeuristicLab.Problems.GeneticProgramming.Boolean {
+  [Item("Multiplexer Problem",
+    "The Boolean multiplexer genetic programming problem. See Koza 1992, page 171, section 7.4.1 11-multiplexer.")]
+  [Creatable(CreatableAttribute.Categories.GeneticProgrammingProblems, Priority = 900)]
+  [StorableClass]
+  public sealed class MultiplexerProblem : SymbolicExpressionTreeProblem {
+
+    #region parameter names
+    private const string NumberOfBitsParameterName = "NumberOfBits";
+    #endregion
+
+    #region Parameter Properties
+    public IFixedValueParameter<IntValue> NumberOfBitsParameter {
+      get { return (IFixedValueParameter<IntValue>)Parameters[NumberOfBitsParameterName]; }
+    }
+    #endregion
+
+    #region Properties
+    public int NumberOfBits {
+      get { return NumberOfBitsParameter.Value.Value; }
+      set { NumberOfBitsParameter.Value.Value = value; }
+    }
+    #endregion
+
+    public override bool Maximization {
+      get { return true; }
+    }
+
+    #region item cloning and persistence
+    // persistence
+    [StorableConstructor]
+    private MultiplexerProblem(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+      RegisterEventHandlers();
+    }
+
+    // cloning 
+    private MultiplexerProblem(MultiplexerProblem original, Cloner cloner)
+      : base(original, cloner) {
+      RegisterEventHandlers();
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new MultiplexerProblem(this, cloner);
+    }
+    #endregion
+
+
+    public MultiplexerProblem()
+      : base() {
+      Parameters.Add(new FixedValueParameter<IntValue>(NumberOfBitsParameterName,
+        "The number of bits for the input parameter for the multiplexer function. This is the sum of the number of address bits and the number of input lines. E.g. the 11-MUX has 3 address bits and 8 input lines",
+        new IntValue(11)));
+
+      var g = new SimpleSymbolicExpressionGrammar(); // will be replaced in update grammar
+      Encoding = new SymbolicExpressionTreeEncoding(g, 100, 17);
+
+      UpdateGrammar();
+      RegisterEventHandlers();
+    }
+
+    private void UpdateGrammar() {
+      var g = new SimpleSymbolicExpressionGrammar();
+      g.AddSymbols(new[] { "AND", "OR" }, 2, 2); // See Koza 1992, page 171, section 7.4.1 11-multiplexer
+      g.AddSymbols(new[] { "NOT" }, 1, 1);
+      g.AddSymbols(new[] { "IF" }, 3, 3);
+
+      // find the number of address lines and input lines
+      // e.g. 11-MUX: 3 addrBits + 8 input bits
+
+      var addrBits = (int)Math.Log(NumberOfBits, 2); // largest power of two that fits into the number of bits
+      var inputBits = NumberOfBits - addrBits;
+
+      for (int i = 0; i < addrBits; i++)
+        g.AddTerminalSymbol(string.Format("a{0}", i));
+      for (int i = 0; i < inputBits; i++)
+        g.AddTerminalSymbol(string.Format("d{0}", i));
+
+      Encoding.Grammar = g;
+
+      BestKnownQuality = Math.Pow(2, NumberOfBits); // this is a benchmark problem (the best achievable quality is known for a given number of bits)
+    }
+
+
+    public override double Evaluate(ISymbolicExpressionTree tree, IRandom random) {
+      if (NumberOfBits <= 0) throw new NotSupportedException("Number of bits must be larger than zero.");
+      if (NumberOfBits > 37) throw new NotSupportedException("Multiplexer does not support problems with number of bits > 37.");
+      var bs = Enumerable.Range(0, (int)Math.Pow(2, NumberOfBits));
+      var addrBits = (int)Math.Log(NumberOfBits, 2); // largest power of two that fits into the number of bits
+      var inputBits = NumberOfBits - addrBits;
+      var targets = bs.Select(b => CalcTarget(b, addrBits, inputBits));
+      var pred = Interpret(tree, bs, (byte)addrBits);
+      return targets.Zip(pred, (t, p) => t == p ? 1 : 0).Sum(); // count number of correct predictions
+    }
+
+    private bool CalcTarget(int b, int addrBits, int inputBits) {
+      Contract.Assert(addrBits > 0);
+      // calc addr
+      int addr = 0;
+      for (int i = addrBits - 1; i >= 0; i--) {
+        addr = addr << 1;
+        if (GetBits(b, (byte)i)) addr += 1;
+      }
+      if (addr <= inputBits)
+        return GetBits(b, (byte)(addrBits + addr));
+      else return false; // in case the number of bits is smaller then necessary we assume that the remaining lines are false
+    }
+
+    private static IEnumerable<bool> Interpret(ISymbolicExpressionTree tree, IEnumerable<int> bs, byte addrBits) {
+      // skip programRoot and startSymbol
+      return InterpretRec(tree.Root.GetSubtree(0).GetSubtree(0), bs, addrBits);
+    }
+
+
+    private static IEnumerable<bool> InterpretRec(ISymbolicExpressionTreeNode node, IEnumerable<int> bs, byte addrBits) {
+      Func<ISymbolicExpressionTreeNode, Func<bool, bool>, IEnumerable<bool>> unaryEval =
+        (child, f) => InterpretRec(child, bs, addrBits).Select(f);
+      Func<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode, Func<bool, bool, bool>, IEnumerable<bool>> binaryEval =
+        (left, right, f) => InterpretRec(left, bs, addrBits).Zip(InterpretRec(right, bs, addrBits), f);
+
+      switch (node.Symbol.Name) {
+        case "AND": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x & y);
+        case "OR": return binaryEval(node.GetSubtree(0), node.GetSubtree(1), (x, y) => x | y);
+        case "NOT": return unaryEval(node.GetSubtree(0), (x) => !x);
+        case "IF": return EvalIf(node.GetSubtree(0), node.GetSubtree(1), node.GetSubtree(2), bs, addrBits);
+        default: {
+            if (node.Symbol.Name[0] == 'a') {
+              byte bitPos;
+              if (byte.TryParse(node.Symbol.Name.Substring(1), out bitPos)) {
+                return bs.Select(b => GetBits(b, bitPos));
+              }
+            } else if (node.Symbol.Name[0] == 'd') {
+              byte bitPos;
+              if (byte.TryParse(node.Symbol.Name.Substring(1), out bitPos)) {
+                return bs.Select(b => GetBits(b, (byte)(bitPos + addrBits))); // offset of input line bits
+              }
+            }
+
+            throw new NotSupportedException(string.Format("Found unexpected symbol {0}", node.Symbol.Name));
+          }
+      }
+    }
+
+    private static IEnumerable<bool> EvalIf(ISymbolicExpressionTreeNode pred, ISymbolicExpressionTreeNode trueBranch, ISymbolicExpressionTreeNode falseBranch, IEnumerable<int> bs, byte addrBits) {
+      var preds = InterpretRec(pred, bs, addrBits).GetEnumerator();
+      var tB = InterpretRec(trueBranch, bs, addrBits).GetEnumerator();
+      var fB = InterpretRec(falseBranch, bs, addrBits).GetEnumerator();
+      // start enumerators
+
+      while (preds.MoveNext() & tB.MoveNext() & fB.MoveNext()) {
+        if (preds.Current) yield return tB.Current;
+        else yield return fB.Current;
+      }
+    }
+
+    private static bool GetBits(int b, byte bitPos) {
+      return (b & (1 << bitPos)) != 0;
+    }
+
+    #region events
+    private void RegisterEventHandlers() {
+      NumberOfBitsParameter.Value.ValueChanged += (sender, args) => UpdateGrammar();
+    }
+    #endregion
+  }
+}
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/HeuristicLab.Problems.GeneticProgramming-3.3.csproj
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/HeuristicLab.Problems.GeneticProgramming-3.3.csproj	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/HeuristicLab.Problems.GeneticProgramming-3.3.csproj	(revision 13280)
@@ -109,4 +109,7 @@
     <Compile Include="ArtificialAnt\Problem.cs" />
     <Compile Include="ArtificialAnt\Trail.cs" />
+    <Compile Include="BasicSymbolicRegression\Problem.cs" />
+    <Compile Include="Boolean\MultiplexerProblem.cs" />
+    <Compile Include="Boolean\EvenParityProblem.cs" />
     <Compile Include="LawnMower\Interpreter.cs" />
     <Compile Include="LawnMower\Problem.cs" />
@@ -174,4 +177,14 @@
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
       <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis\3.4\HeuristicLab.Problems.DataAnalysis-3.4.csproj">
+      <Project>{DF87C13E-A889-46FF-8153-66DCAA8C5674}</Project>
+      <Name>HeuristicLab.Problems.DataAnalysis-3.4</Name>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Problems.Instances\3.3\HeuristicLab.Problems.Instances-3.3.csproj">
+      <Project>{3540E29E-4793-49E7-8EE2-FEA7F61C3994}</Project>
+      <Name>HeuristicLab.Problems.Instances-3.3</Name>
       <Private>False</Private>
     </ProjectReference>
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Interpreter.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Interpreter.cs	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Interpreter.cs	(revision 13280)
@@ -26,5 +26,5 @@
 
 namespace HeuristicLab.Problems.GeneticProgramming.LawnMower {
-  public class Interpreter {
+  public static class Interpreter {
     private enum Heading {
       South,
@@ -45,7 +45,5 @@
     }
 
-
     public static bool[,] EvaluateLawnMowerProgram(int length, int width, ISymbolicExpressionTree tree) {
-
       bool[,] lawn = new bool[length, width];
       var mowerState = new MowerState();
@@ -56,5 +54,4 @@
       return lawn;
     }
-
 
     private static Tuple<int, int> EvaluateLawnMowerProgram(ISymbolicExpressionTreeNode node, MowerState mowerState, bool[,] lawn, IEnumerable<ISymbolicExpressionTreeNode> adfs) {
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Problem.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Problem.cs	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Problem.cs	(revision 13280)
@@ -50,11 +50,16 @@
     }
 
+    #region item cloning and persistence
     [StorableConstructor]
-    protected Problem(bool deserializing)
-      : base(deserializing) {
+    protected Problem(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() { }
+
+    protected Problem(Problem original, Cloner cloner) : base(original, cloner) { }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Problem(this, cloner);
     }
-    protected Problem(Problem original, Cloner cloner)
-      : base(original, cloner) {
-    }
+    #endregion
+
     public Problem()
       : base() {
@@ -87,8 +92,4 @@
     }
 
-
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() { }
-
     public override double Evaluate(ISymbolicExpressionTree tree, IRandom random) {
       var length = LawnLengthParameter.Value.Value;
@@ -105,8 +106,4 @@
       return numberOfMowedCells;
     }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Problem(this, cloner);
-    }
   }
 }
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Solution.cs
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Solution.cs	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/LawnMower/Solution.cs	(revision 13280)
@@ -37,6 +37,10 @@
     public double Quality { get; private set; }
 
+    #region item cloning and persistence
     [StorableConstructor]
     private Solution(bool deserializing) : base(deserializing) { }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() { }
+
     private Solution(Solution original, Cloner cloner)
       : base(original, cloner) {
@@ -46,4 +50,8 @@
       this.Quality = original.Quality;
     }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new Solution(this, cloner);
+    }
+    #endregion
 
     public Solution(ISymbolicExpressionTree tree, int length, int width, double quality)
@@ -54,10 +62,4 @@
       this.Quality = quality;
     }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() {
-    }
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new Solution(this, cloner);
-    }
   }
 }
Index: /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Plugin.cs.frame
===================================================================
--- /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Plugin.cs.frame	(revision 13279)
+++ /stable/HeuristicLab.Problems.GeneticProgramming/3.3/Plugin.cs.frame	(revision 13280)
@@ -37,4 +37,6 @@
   [PluginDependency("HeuristicLab.Parameters", "3.3")]
   [PluginDependency("HeuristicLab.Persistence", "3.3")]
+  [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
+  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
   [PluginDependency("HeuristicLab.Random", "3.3")]
   public class HeuristicLabProblemsGeneticProgrammingPlugin : PluginBase {
Index: /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPArtificialAntSampleTest.cs
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPArtificialAntSampleTest.cs	(revision 13279)
+++ /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPArtificialAntSampleTest.cs	(revision 13280)
@@ -25,5 +25,5 @@
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Persistence.Default.Xml;
-using HeuristicLab.Problems.ArtificialAnt;
+using HeuristicLab.Problems.GeneticProgramming.ArtificialAnt;
 using HeuristicLab.Selection;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -60,10 +60,10 @@
 
       #region Problem Configuration
-      ArtificialAntProblem antProblem = new ArtificialAntProblem();
-      antProblem.BestKnownQuality.Value = 89;
-      antProblem.MaxExpressionDepth.Value = 10;
-      antProblem.MaxExpressionLength.Value = 100;
-      antProblem.MaxFunctionArguments.Value = 3;
-      antProblem.MaxFunctionDefinitions.Value = 3;
+      Problem antProblem = new Problem();
+      antProblem.BestKnownQuality = 89;
+      antProblem.Encoding.TreeDepth = 10;
+      antProblem.Encoding.TreeLength = 100;
+      antProblem.Encoding.FunctionDefinitions = 3;
+      antProblem.Encoding.FunctionArguments = 3;
       antProblem.MaxTimeSteps.Value = 600;
       #endregion
Index: /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPLawnMowerSampleTest.cs
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPLawnMowerSampleTest.cs	(revision 13279)
+++ /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPLawnMowerSampleTest.cs	(revision 13280)
@@ -36,4 +36,8 @@
       ga.SetSeedRandomly.Value = false;
       SamplesUtils.RunAlgorithm(ga);
+      Assert.AreEqual(55, SamplesUtils.GetDoubleResult(ga, "BestQuality"));
+      Assert.AreEqual(49.266, SamplesUtils.GetDoubleResult(ga, "CurrentAverageQuality"));
+      Assert.AreEqual(1, SamplesUtils.GetDoubleResult(ga, "CurrentWorstQuality"));
+      Assert.AreEqual(50950, SamplesUtils.GetIntResult(ga, "EvaluatedSolutions"));
     }
 
@@ -43,5 +47,5 @@
       #region Problem Configuration
 
-      var problem = new HeuristicLab.Problems.LawnMower.Problem();
+      var problem = new Problems.GeneticProgramming.LawnMower.Problem();
 
       #endregion
Index: /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPMultiplexerSampleTest.cs
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPMultiplexerSampleTest.cs	(revision 13279)
+++ /stable/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GPMultiplexerSampleTest.cs	(revision 13280)
@@ -24,7 +24,4 @@
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Persistence.Default.Xml;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
-using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
-using HeuristicLab.Problems.Instances.DataAnalysis;
 using HeuristicLab.Selection;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
@@ -51,49 +48,15 @@
       SamplesUtils.RunAlgorithm(osga);
 
-      Assert.AreEqual(0.125, SamplesUtils.GetDoubleResult(osga, "BestQuality"), 1E-8);
-      Assert.AreEqual(0.237275390625, SamplesUtils.GetDoubleResult(osga, "CurrentAverageQuality"), 1E-8);
-      Assert.AreEqual(1.181640625, SamplesUtils.GetDoubleResult(osga, "CurrentWorstQuality"), 1E-8);
-      Assert.AreEqual(105500, SamplesUtils.GetIntResult(osga, "EvaluatedSolutions"));
+      Assert.AreEqual(1856, SamplesUtils.GetDoubleResult(osga, "BestQuality"), 1E-8);
+      Assert.AreEqual(1784.76, SamplesUtils.GetDoubleResult(osga, "CurrentAverageQuality"), 1E-8);
+      Assert.AreEqual(1536, SamplesUtils.GetDoubleResult(osga, "CurrentWorstQuality"), 1E-8);
+      Assert.AreEqual(66900, SamplesUtils.GetIntResult(osga, "EvaluatedSolutions"));
     }
 
     public static OffspringSelectionGeneticAlgorithm CreateGpMultiplexerSample() {
-      var instanceProvider = new RegressionCSVInstanceProvider();
-      var regressionImportType = new RegressionImportType();
-      regressionImportType.TargetVariable = "output";
-      regressionImportType.TrainingPercentage = 100;
-      var dataAnalysisCSVFormat = new DataAnalysisCSVFormat();
-      dataAnalysisCSVFormat.Separator = ',';
-      dataAnalysisCSVFormat.VariableNamesAvailable = true;
-
-      var problemData = instanceProvider.ImportData(@"Test Resources\Multiplexer11.csv", regressionImportType, dataAnalysisCSVFormat);
-      problemData.Name = "11-Multiplexer";
-
-      var problem = new SymbolicRegressionSingleObjectiveProblem();
+      var problem = new HeuristicLab.Problems.GeneticProgramming.Boolean.MultiplexerProblem();
       problem.Name = "11-Multiplexer Problem";
-      problem.ProblemData = problemData;
-      problem.MaximumSymbolicExpressionTreeLength.Value = 50;
-      problem.MaximumSymbolicExpressionTreeDepth.Value = 50;
-      problem.EvaluatorParameter.Value = new SymbolicRegressionSingleObjectiveMeanSquaredErrorEvaluator();
-      problem.ApplyLinearScaling.Value = false;
-
-
-      var grammar = new FullFunctionalExpressionGrammar();
-      problem.SymbolicExpressionTreeGrammar = grammar;
-      foreach (var symbol in grammar.Symbols) {
-        if (symbol is ProgramRootSymbol) symbol.Enabled = true;
-        else if (symbol is StartSymbol) symbol.Enabled = true;
-        else if (symbol is IfThenElse) symbol.Enabled = true;
-        else if (symbol is And) symbol.Enabled = true;
-        else if (symbol is Or) symbol.Enabled = true;
-        else if (symbol is Xor) symbol.Enabled = true;
-        else if (symbol.GetType() == typeof(Variable)) {
-          //necessary as there are multiple classes derived from Variable (e.g., VariableCondition)
-          symbol.Enabled = true;
-          var variableSymbol = (Variable)symbol;
-          variableSymbol.MultiplicativeWeightManipulatorSigma = 0.0;
-          variableSymbol.WeightManipulatorSigma = 0.0;
-          variableSymbol.WeightSigma = 0.0;
-        } else symbol.Enabled = false;
-      }
+      problem.Encoding.TreeLength = 50;
+      problem.Encoding.TreeDepth = 50;
 
       var osga = new OffspringSelectionGeneticAlgorithm();
Index: /stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj
===================================================================
--- /stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 13279)
+++ /stable/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 13280)
@@ -296,4 +296,9 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\bin\HeuristicLab.Problems.ExternalEvaluation.Views-3.4.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.GeneticProgramming-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\bin\HeuristicLab.Problems.GeneticProgramming-3.3.dll</HintPath>
       <Private>False</Private>
     </Reference>
@@ -622,7 +627,4 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Test Resources\Multiplexer11.csv">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-    </None>
     <None Include="Test Resources\SamplesExperimentFinished.hl">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
Index: able/HeuristicLab.Tests/Test Resources/multiplexer11.csv
===================================================================
--- /stable/HeuristicLab.Tests/Test Resources/multiplexer11.csv	(revision 13279)
+++ 	(revision )
@@ -1,2049 +1,0 @@
-a0,a1,a2,d0,d1,d2,d3,d4,d5,d6,d7,output
-1,1,1,1,1,1,1,1,1,1,1,1
-0,1,1,1,1,1,1,1,1,1,1,1
-1,0,1,1,1,1,1,1,1,1,1,1
-0,0,1,1,1,1,1,1,1,1,1,1
-1,1,0,1,1,1,1,1,1,1,1,1
-0,1,0,1,1,1,1,1,1,1,1,1
-1,0,0,1,1,1,1,1,1,1,1,1
-0,0,0,1,1,1,1,1,1,1,1,1
-1,1,1,0,1,1,1,1,1,1,1,1
-0,1,1,0,1,1,1,1,1,1,1,1
-1,0,1,0,1,1,1,1,1,1,1,1
-0,0,1,0,1,1,1,1,1,1,1,1
-1,1,0,0,1,1,1,1,1,1,1,1
-0,1,0,0,1,1,1,1,1,1,1,1
-1,0,0,0,1,1,1,1,1,1,1,1
-0,0,0,0,1,1,1,1,1,1,1,0
-1,1,1,1,0,1,1,1,1,1,1,1
-0,1,1,1,0,1,1,1,1,1,1,1
-1,0,1,1,0,1,1,1,1,1,1,1
-0,0,1,1,0,1,1,1,1,1,1,0
-1,1,0,1,0,1,1,1,1,1,1,1
-0,1,0,1,0,1,1,1,1,1,1,1
-1,0,0,1,0,1,1,1,1,1,1,1
-0,0,0,1,0,1,1,1,1,1,1,1
-1,1,1,0,0,1,1,1,1,1,1,1
-0,1,1,0,0,1,1,1,1,1,1,1
-1,0,1,0,0,1,1,1,1,1,1,1
-0,0,1,0,0,1,1,1,1,1,1,0
-1,1,0,0,0,1,1,1,1,1,1,1
-0,1,0,0,0,1,1,1,1,1,1,1
-1,0,0,0,0,1,1,1,1,1,1,1
-0,0,0,0,0,1,1,1,1,1,1,0
-1,1,1,1,1,0,1,1,1,1,1,1
-0,1,1,1,1,0,1,1,1,1,1,1
-1,0,1,1,1,0,1,1,1,1,1,1
-0,0,1,1,1,0,1,1,1,1,1,1
-1,1,0,1,1,0,1,1,1,1,1,1
-0,1,0,1,1,0,1,1,1,1,1,0
-1,0,0,1,1,0,1,1,1,1,1,1
-0,0,0,1,1,0,1,1,1,1,1,1
-1,1,1,0,1,0,1,1,1,1,1,1
-0,1,1,0,1,0,1,1,1,1,1,1
-1,0,1,0,1,0,1,1,1,1,1,1
-0,0,1,0,1,0,1,1,1,1,1,1
-1,1,0,0,1,0,1,1,1,1,1,1
-0,1,0,0,1,0,1,1,1,1,1,0
-1,0,0,0,1,0,1,1,1,1,1,1
-0,0,0,0,1,0,1,1,1,1,1,0
-1,1,1,1,0,0,1,1,1,1,1,1
-0,1,1,1,0,0,1,1,1,1,1,1
-1,0,1,1,0,0,1,1,1,1,1,1
-0,0,1,1,0,0,1,1,1,1,1,0
-1,1,0,1,0,0,1,1,1,1,1,1
-0,1,0,1,0,0,1,1,1,1,1,0
-1,0,0,1,0,0,1,1,1,1,1,1
-0,0,0,1,0,0,1,1,1,1,1,1
-1,1,1,0,0,0,1,1,1,1,1,1
-0,1,1,0,0,0,1,1,1,1,1,1
-1,0,1,0,0,0,1,1,1,1,1,1
-0,0,1,0,0,0,1,1,1,1,1,0
-1,1,0,0,0,0,1,1,1,1,1,1
-0,1,0,0,0,0,1,1,1,1,1,0
-1,0,0,0,0,0,1,1,1,1,1,1
-0,0,0,0,0,0,1,1,1,1,1,0
-1,1,1,1,1,1,0,1,1,1,1,1
-0,1,1,1,1,1,0,1,1,1,1,0
-1,0,1,1,1,1,0,1,1,1,1,1
-0,0,1,1,1,1,0,1,1,1,1,1
-1,1,0,1,1,1,0,1,1,1,1,1
-0,1,0,1,1,1,0,1,1,1,1,1
-1,0,0,1,1,1,0,1,1,1,1,1
-0,0,0,1,1,1,0,1,1,1,1,1
-1,1,1,0,1,1,0,1,1,1,1,1
-0,1,1,0,1,1,0,1,1,1,1,0
-1,0,1,0,1,1,0,1,1,1,1,1
-0,0,1,0,1,1,0,1,1,1,1,1
-1,1,0,0,1,1,0,1,1,1,1,1
-0,1,0,0,1,1,0,1,1,1,1,1
-1,0,0,0,1,1,0,1,1,1,1,1
-0,0,0,0,1,1,0,1,1,1,1,0
-1,1,1,1,0,1,0,1,1,1,1,1
-0,1,1,1,0,1,0,1,1,1,1,0
-1,0,1,1,0,1,0,1,1,1,1,1
-0,0,1,1,0,1,0,1,1,1,1,0
-1,1,0,1,0,1,0,1,1,1,1,1
-0,1,0,1,0,1,0,1,1,1,1,1
-1,0,0,1,0,1,0,1,1,1,1,1
-0,0,0,1,0,1,0,1,1,1,1,1
-1,1,1,0,0,1,0,1,1,1,1,1
-0,1,1,0,0,1,0,1,1,1,1,0
-1,0,1,0,0,1,0,1,1,1,1,1
-0,0,1,0,0,1,0,1,1,1,1,0
-1,1,0,0,0,1,0,1,1,1,1,1
-0,1,0,0,0,1,0,1,1,1,1,1
-1,0,0,0,0,1,0,1,1,1,1,1
-0,0,0,0,0,1,0,1,1,1,1,0
-1,1,1,1,1,0,0,1,1,1,1,1
-0,1,1,1,1,0,0,1,1,1,1,0
-1,0,1,1,1,0,0,1,1,1,1,1
-0,0,1,1,1,0,0,1,1,1,1,1
-1,1,0,1,1,0,0,1,1,1,1,1
-0,1,0,1,1,0,0,1,1,1,1,0
-1,0,0,1,1,0,0,1,1,1,1,1
-0,0,0,1,1,0,0,1,1,1,1,1
-1,1,1,0,1,0,0,1,1,1,1,1
-0,1,1,0,1,0,0,1,1,1,1,0
-1,0,1,0,1,0,0,1,1,1,1,1
-0,0,1,0,1,0,0,1,1,1,1,1
-1,1,0,0,1,0,0,1,1,1,1,1
-0,1,0,0,1,0,0,1,1,1,1,0
-1,0,0,0,1,0,0,1,1,1,1,1
-0,0,0,0,1,0,0,1,1,1,1,0
-1,1,1,1,0,0,0,1,1,1,1,1
-0,1,1,1,0,0,0,1,1,1,1,0
-1,0,1,1,0,0,0,1,1,1,1,1
-0,0,1,1,0,0,0,1,1,1,1,0
-1,1,0,1,0,0,0,1,1,1,1,1
-0,1,0,1,0,0,0,1,1,1,1,0
-1,0,0,1,0,0,0,1,1,1,1,1
-0,0,0,1,0,0,0,1,1,1,1,1
-1,1,1,0,0,0,0,1,1,1,1,1
-0,1,1,0,0,0,0,1,1,1,1,0
-1,0,1,0,0,0,0,1,1,1,1,1
-0,0,1,0,0,0,0,1,1,1,1,0
-1,1,0,0,0,0,0,1,1,1,1,1
-0,1,0,0,0,0,0,1,1,1,1,0
-1,0,0,0,0,0,0,1,1,1,1,1
-0,0,0,0,0,0,0,1,1,1,1,0
-1,1,1,1,1,1,1,0,1,1,1,1
-0,1,1,1,1,1,1,0,1,1,1,1
-1,0,1,1,1,1,1,0,1,1,1,1
-0,0,1,1,1,1,1,0,1,1,1,1
-1,1,0,1,1,1,1,0,1,1,1,1
-0,1,0,1,1,1,1,0,1,1,1,1
-1,0,0,1,1,1,1,0,1,1,1,0
-0,0,0,1,1,1,1,0,1,1,1,1
-1,1,1,0,1,1,1,0,1,1,1,1
-0,1,1,0,1,1,1,0,1,1,1,1
-1,0,1,0,1,1,1,0,1,1,1,1
-0,0,1,0,1,1,1,0,1,1,1,1
-1,1,0,0,1,1,1,0,1,1,1,1
-0,1,0,0,1,1,1,0,1,1,1,1
-1,0,0,0,1,1,1,0,1,1,1,0
-0,0,0,0,1,1,1,0,1,1,1,0
-1,1,1,1,0,1,1,0,1,1,1,1
-0,1,1,1,0,1,1,0,1,1,1,1
-1,0,1,1,0,1,1,0,1,1,1,1
-0,0,1,1,0,1,1,0,1,1,1,0
-1,1,0,1,0,1,1,0,1,1,1,1
-0,1,0,1,0,1,1,0,1,1,1,1
-1,0,0,1,0,1,1,0,1,1,1,0
-0,0,0,1,0,1,1,0,1,1,1,1
-1,1,1,0,0,1,1,0,1,1,1,1
-0,1,1,0,0,1,1,0,1,1,1,1
-1,0,1,0,0,1,1,0,1,1,1,1
-0,0,1,0,0,1,1,0,1,1,1,0
-1,1,0,0,0,1,1,0,1,1,1,1
-0,1,0,0,0,1,1,0,1,1,1,1
-1,0,0,0,0,1,1,0,1,1,1,0
-0,0,0,0,0,1,1,0,1,1,1,0
-1,1,1,1,1,0,1,0,1,1,1,1
-0,1,1,1,1,0,1,0,1,1,1,1
-1,0,1,1,1,0,1,0,1,1,1,1
-0,0,1,1,1,0,1,0,1,1,1,1
-1,1,0,1,1,0,1,0,1,1,1,1
-0,1,0,1,1,0,1,0,1,1,1,0
-1,0,0,1,1,0,1,0,1,1,1,0
-0,0,0,1,1,0,1,0,1,1,1,1
-1,1,1,0,1,0,1,0,1,1,1,1
-0,1,1,0,1,0,1,0,1,1,1,1
-1,0,1,0,1,0,1,0,1,1,1,1
-0,0,1,0,1,0,1,0,1,1,1,1
-1,1,0,0,1,0,1,0,1,1,1,1
-0,1,0,0,1,0,1,0,1,1,1,0
-1,0,0,0,1,0,1,0,1,1,1,0
-0,0,0,0,1,0,1,0,1,1,1,0
-1,1,1,1,0,0,1,0,1,1,1,1
-0,1,1,1,0,0,1,0,1,1,1,1
-1,0,1,1,0,0,1,0,1,1,1,1
-0,0,1,1,0,0,1,0,1,1,1,0
-1,1,0,1,0,0,1,0,1,1,1,1
-0,1,0,1,0,0,1,0,1,1,1,0
-1,0,0,1,0,0,1,0,1,1,1,0
-0,0,0,1,0,0,1,0,1,1,1,1
-1,1,1,0,0,0,1,0,1,1,1,1
-0,1,1,0,0,0,1,0,1,1,1,1
-1,0,1,0,0,0,1,0,1,1,1,1
-0,0,1,0,0,0,1,0,1,1,1,0
-1,1,0,0,0,0,1,0,1,1,1,1
-0,1,0,0,0,0,1,0,1,1,1,0
-1,0,0,0,0,0,1,0,1,1,1,0
-0,0,0,0,0,0,1,0,1,1,1,0
-1,1,1,1,1,1,0,0,1,1,1,1
-0,1,1,1,1,1,0,0,1,1,1,0
-1,0,1,1,1,1,0,0,1,1,1,1
-0,0,1,1,1,1,0,0,1,1,1,1
-1,1,0,1,1,1,0,0,1,1,1,1
-0,1,0,1,1,1,0,0,1,1,1,1
-1,0,0,1,1,1,0,0,1,1,1,0
-0,0,0,1,1,1,0,0,1,1,1,1
-1,1,1,0,1,1,0,0,1,1,1,1
-0,1,1,0,1,1,0,0,1,1,1,0
-1,0,1,0,1,1,0,0,1,1,1,1
-0,0,1,0,1,1,0,0,1,1,1,1
-1,1,0,0,1,1,0,0,1,1,1,1
-0,1,0,0,1,1,0,0,1,1,1,1
-1,0,0,0,1,1,0,0,1,1,1,0
-0,0,0,0,1,1,0,0,1,1,1,0
-1,1,1,1,0,1,0,0,1,1,1,1
-0,1,1,1,0,1,0,0,1,1,1,0
-1,0,1,1,0,1,0,0,1,1,1,1
-0,0,1,1,0,1,0,0,1,1,1,0
-1,1,0,1,0,1,0,0,1,1,1,1
-0,1,0,1,0,1,0,0,1,1,1,1
-1,0,0,1,0,1,0,0,1,1,1,0
-0,0,0,1,0,1,0,0,1,1,1,1
-1,1,1,0,0,1,0,0,1,1,1,1
-0,1,1,0,0,1,0,0,1,1,1,0
-1,0,1,0,0,1,0,0,1,1,1,1
-0,0,1,0,0,1,0,0,1,1,1,0
-1,1,0,0,0,1,0,0,1,1,1,1
-0,1,0,0,0,1,0,0,1,1,1,1
-1,0,0,0,0,1,0,0,1,1,1,0
-0,0,0,0,0,1,0,0,1,1,1,0
-1,1,1,1,1,0,0,0,1,1,1,1
-0,1,1,1,1,0,0,0,1,1,1,0
-1,0,1,1,1,0,0,0,1,1,1,1
-0,0,1,1,1,0,0,0,1,1,1,1
-1,1,0,1,1,0,0,0,1,1,1,1
-0,1,0,1,1,0,0,0,1,1,1,0
-1,0,0,1,1,0,0,0,1,1,1,0
-0,0,0,1,1,0,0,0,1,1,1,1
-1,1,1,0,1,0,0,0,1,1,1,1
-0,1,1,0,1,0,0,0,1,1,1,0
-1,0,1,0,1,0,0,0,1,1,1,1
-0,0,1,0,1,0,0,0,1,1,1,1
-1,1,0,0,1,0,0,0,1,1,1,1
-0,1,0,0,1,0,0,0,1,1,1,0
-1,0,0,0,1,0,0,0,1,1,1,0
-0,0,0,0,1,0,0,0,1,1,1,0
-1,1,1,1,0,0,0,0,1,1,1,1
-0,1,1,1,0,0,0,0,1,1,1,0
-1,0,1,1,0,0,0,0,1,1,1,1
-0,0,1,1,0,0,0,0,1,1,1,0
-1,1,0,1,0,0,0,0,1,1,1,1
-0,1,0,1,0,0,0,0,1,1,1,0
-1,0,0,1,0,0,0,0,1,1,1,0
-0,0,0,1,0,0,0,0,1,1,1,1
-1,1,1,0,0,0,0,0,1,1,1,1
-0,1,1,0,0,0,0,0,1,1,1,0
-1,0,1,0,0,0,0,0,1,1,1,1
-0,0,1,0,0,0,0,0,1,1,1,0
-1,1,0,0,0,0,0,0,1,1,1,1
-0,1,0,0,0,0,0,0,1,1,1,0
-1,0,0,0,0,0,0,0,1,1,1,0
-0,0,0,0,0,0,0,0,1,1,1,0
-1,1,1,1,1,1,1,1,0,1,1,1
-0,1,1,1,1,1,1,1,0,1,1,1
-1,0,1,1,1,1,1,1,0,1,1,0
-0,0,1,1,1,1,1,1,0,1,1,1
-1,1,0,1,1,1,1,1,0,1,1,1
-0,1,0,1,1,1,1,1,0,1,1,1
-1,0,0,1,1,1,1,1,0,1,1,1
-0,0,0,1,1,1,1,1,0,1,1,1
-1,1,1,0,1,1,1,1,0,1,1,1
-0,1,1,0,1,1,1,1,0,1,1,1
-1,0,1,0,1,1,1,1,0,1,1,0
-0,0,1,0,1,1,1,1,0,1,1,1
-1,1,0,0,1,1,1,1,0,1,1,1
-0,1,0,0,1,1,1,1,0,1,1,1
-1,0,0,0,1,1,1,1,0,1,1,1
-0,0,0,0,1,1,1,1,0,1,1,0
-1,1,1,1,0,1,1,1,0,1,1,1
-0,1,1,1,0,1,1,1,0,1,1,1
-1,0,1,1,0,1,1,1,0,1,1,0
-0,0,1,1,0,1,1,1,0,1,1,0
-1,1,0,1,0,1,1,1,0,1,1,1
-0,1,0,1,0,1,1,1,0,1,1,1
-1,0,0,1,0,1,1,1,0,1,1,1
-0,0,0,1,0,1,1,1,0,1,1,1
-1,1,1,0,0,1,1,1,0,1,1,1
-0,1,1,0,0,1,1,1,0,1,1,1
-1,0,1,0,0,1,1,1,0,1,1,0
-0,0,1,0,0,1,1,1,0,1,1,0
-1,1,0,0,0,1,1,1,0,1,1,1
-0,1,0,0,0,1,1,1,0,1,1,1
-1,0,0,0,0,1,1,1,0,1,1,1
-0,0,0,0,0,1,1,1,0,1,1,0
-1,1,1,1,1,0,1,1,0,1,1,1
-0,1,1,1,1,0,1,1,0,1,1,1
-1,0,1,1,1,0,1,1,0,1,1,0
-0,0,1,1,1,0,1,1,0,1,1,1
-1,1,0,1,1,0,1,1,0,1,1,1
-0,1,0,1,1,0,1,1,0,1,1,0
-1,0,0,1,1,0,1,1,0,1,1,1
-0,0,0,1,1,0,1,1,0,1,1,1
-1,1,1,0,1,0,1,1,0,1,1,1
-0,1,1,0,1,0,1,1,0,1,1,1
-1,0,1,0,1,0,1,1,0,1,1,0
-0,0,1,0,1,0,1,1,0,1,1,1
-1,1,0,0,1,0,1,1,0,1,1,1
-0,1,0,0,1,0,1,1,0,1,1,0
-1,0,0,0,1,0,1,1,0,1,1,1
-0,0,0,0,1,0,1,1,0,1,1,0
-1,1,1,1,0,0,1,1,0,1,1,1
-0,1,1,1,0,0,1,1,0,1,1,1
-1,0,1,1,0,0,1,1,0,1,1,0
-0,0,1,1,0,0,1,1,0,1,1,0
-1,1,0,1,0,0,1,1,0,1,1,1
-0,1,0,1,0,0,1,1,0,1,1,0
-1,0,0,1,0,0,1,1,0,1,1,1
-0,0,0,1,0,0,1,1,0,1,1,1
-1,1,1,0,0,0,1,1,0,1,1,1
-0,1,1,0,0,0,1,1,0,1,1,1
-1,0,1,0,0,0,1,1,0,1,1,0
-0,0,1,0,0,0,1,1,0,1,1,0
-1,1,0,0,0,0,1,1,0,1,1,1
-0,1,0,0,0,0,1,1,0,1,1,0
-1,0,0,0,0,0,1,1,0,1,1,1
-0,0,0,0,0,0,1,1,0,1,1,0
-1,1,1,1,1,1,0,1,0,1,1,1
-0,1,1,1,1,1,0,1,0,1,1,0
-1,0,1,1,1,1,0,1,0,1,1,0
-0,0,1,1,1,1,0,1,0,1,1,1
-1,1,0,1,1,1,0,1,0,1,1,1
-0,1,0,1,1,1,0,1,0,1,1,1
-1,0,0,1,1,1,0,1,0,1,1,1
-0,0,0,1,1,1,0,1,0,1,1,1
-1,1,1,0,1,1,0,1,0,1,1,1
-0,1,1,0,1,1,0,1,0,1,1,0
-1,0,1,0,1,1,0,1,0,1,1,0
-0,0,1,0,1,1,0,1,0,1,1,1
-1,1,0,0,1,1,0,1,0,1,1,1
-0,1,0,0,1,1,0,1,0,1,1,1
-1,0,0,0,1,1,0,1,0,1,1,1
-0,0,0,0,1,1,0,1,0,1,1,0
-1,1,1,1,0,1,0,1,0,1,1,1
-0,1,1,1,0,1,0,1,0,1,1,0
-1,0,1,1,0,1,0,1,0,1,1,0
-0,0,1,1,0,1,0,1,0,1,1,0
-1,1,0,1,0,1,0,1,0,1,1,1
-0,1,0,1,0,1,0,1,0,1,1,1
-1,0,0,1,0,1,0,1,0,1,1,1
-0,0,0,1,0,1,0,1,0,1,1,1
-1,1,1,0,0,1,0,1,0,1,1,1
-0,1,1,0,0,1,0,1,0,1,1,0
-1,0,1,0,0,1,0,1,0,1,1,0
-0,0,1,0,0,1,0,1,0,1,1,0
-1,1,0,0,0,1,0,1,0,1,1,1
-0,1,0,0,0,1,0,1,0,1,1,1
-1,0,0,0,0,1,0,1,0,1,1,1
-0,0,0,0,0,1,0,1,0,1,1,0
-1,1,1,1,1,0,0,1,0,1,1,1
-0,1,1,1,1,0,0,1,0,1,1,0
-1,0,1,1,1,0,0,1,0,1,1,0
-0,0,1,1,1,0,0,1,0,1,1,1
-1,1,0,1,1,0,0,1,0,1,1,1
-0,1,0,1,1,0,0,1,0,1,1,0
-1,0,0,1,1,0,0,1,0,1,1,1
-0,0,0,1,1,0,0,1,0,1,1,1
-1,1,1,0,1,0,0,1,0,1,1,1
-0,1,1,0,1,0,0,1,0,1,1,0
-1,0,1,0,1,0,0,1,0,1,1,0
-0,0,1,0,1,0,0,1,0,1,1,1
-1,1,0,0,1,0,0,1,0,1,1,1
-0,1,0,0,1,0,0,1,0,1,1,0
-1,0,0,0,1,0,0,1,0,1,1,1
-0,0,0,0,1,0,0,1,0,1,1,0
-1,1,1,1,0,0,0,1,0,1,1,1
-0,1,1,1,0,0,0,1,0,1,1,0
-1,0,1,1,0,0,0,1,0,1,1,0
-0,0,1,1,0,0,0,1,0,1,1,0
-1,1,0,1,0,0,0,1,0,1,1,1
-0,1,0,1,0,0,0,1,0,1,1,0
-1,0,0,1,0,0,0,1,0,1,1,1
-0,0,0,1,0,0,0,1,0,1,1,1
-1,1,1,0,0,0,0,1,0,1,1,1
-0,1,1,0,0,0,0,1,0,1,1,0
-1,0,1,0,0,0,0,1,0,1,1,0
-0,0,1,0,0,0,0,1,0,1,1,0
-1,1,0,0,0,0,0,1,0,1,1,1
-0,1,0,0,0,0,0,1,0,1,1,0
-1,0,0,0,0,0,0,1,0,1,1,1
-0,0,0,0,0,0,0,1,0,1,1,0
-1,1,1,1,1,1,1,0,0,1,1,1
-0,1,1,1,1,1,1,0,0,1,1,1
-1,0,1,1,1,1,1,0,0,1,1,0
-0,0,1,1,1,1,1,0,0,1,1,1
-1,1,0,1,1,1,1,0,0,1,1,1
-0,1,0,1,1,1,1,0,0,1,1,1
-1,0,0,1,1,1,1,0,0,1,1,0
-0,0,0,1,1,1,1,0,0,1,1,1
-1,1,1,0,1,1,1,0,0,1,1,1
-0,1,1,0,1,1,1,0,0,1,1,1
-1,0,1,0,1,1,1,0,0,1,1,0
-0,0,1,0,1,1,1,0,0,1,1,1
-1,1,0,0,1,1,1,0,0,1,1,1
-0,1,0,0,1,1,1,0,0,1,1,1
-1,0,0,0,1,1,1,0,0,1,1,0
-0,0,0,0,1,1,1,0,0,1,1,0
-1,1,1,1,0,1,1,0,0,1,1,1
-0,1,1,1,0,1,1,0,0,1,1,1
-1,0,1,1,0,1,1,0,0,1,1,0
-0,0,1,1,0,1,1,0,0,1,1,0
-1,1,0,1,0,1,1,0,0,1,1,1
-0,1,0,1,0,1,1,0,0,1,1,1
-1,0,0,1,0,1,1,0,0,1,1,0
-0,0,0,1,0,1,1,0,0,1,1,1
-1,1,1,0,0,1,1,0,0,1,1,1
-0,1,1,0,0,1,1,0,0,1,1,1
-1,0,1,0,0,1,1,0,0,1,1,0
-0,0,1,0,0,1,1,0,0,1,1,0
-1,1,0,0,0,1,1,0,0,1,1,1
-0,1,0,0,0,1,1,0,0,1,1,1
-1,0,0,0,0,1,1,0,0,1,1,0
-0,0,0,0,0,1,1,0,0,1,1,0
-1,1,1,1,1,0,1,0,0,1,1,1
-0,1,1,1,1,0,1,0,0,1,1,1
-1,0,1,1,1,0,1,0,0,1,1,0
-0,0,1,1,1,0,1,0,0,1,1,1
-1,1,0,1,1,0,1,0,0,1,1,1
-0,1,0,1,1,0,1,0,0,1,1,0
-1,0,0,1,1,0,1,0,0,1,1,0
-0,0,0,1,1,0,1,0,0,1,1,1
-1,1,1,0,1,0,1,0,0,1,1,1
-0,1,1,0,1,0,1,0,0,1,1,1
-1,0,1,0,1,0,1,0,0,1,1,0
-0,0,1,0,1,0,1,0,0,1,1,1
-1,1,0,0,1,0,1,0,0,1,1,1
-0,1,0,0,1,0,1,0,0,1,1,0
-1,0,0,0,1,0,1,0,0,1,1,0
-0,0,0,0,1,0,1,0,0,1,1,0
-1,1,1,1,0,0,1,0,0,1,1,1
-0,1,1,1,0,0,1,0,0,1,1,1
-1,0,1,1,0,0,1,0,0,1,1,0
-0,0,1,1,0,0,1,0,0,1,1,0
-1,1,0,1,0,0,1,0,0,1,1,1
-0,1,0,1,0,0,1,0,0,1,1,0
-1,0,0,1,0,0,1,0,0,1,1,0
-0,0,0,1,0,0,1,0,0,1,1,1
-1,1,1,0,0,0,1,0,0,1,1,1
-0,1,1,0,0,0,1,0,0,1,1,1
-1,0,1,0,0,0,1,0,0,1,1,0
-0,0,1,0,0,0,1,0,0,1,1,0
-1,1,0,0,0,0,1,0,0,1,1,1
-0,1,0,0,0,0,1,0,0,1,1,0
-1,0,0,0,0,0,1,0,0,1,1,0
-0,0,0,0,0,0,1,0,0,1,1,0
-1,1,1,1,1,1,0,0,0,1,1,1
-0,1,1,1,1,1,0,0,0,1,1,0
-1,0,1,1,1,1,0,0,0,1,1,0
-0,0,1,1,1,1,0,0,0,1,1,1
-1,1,0,1,1,1,0,0,0,1,1,1
-0,1,0,1,1,1,0,0,0,1,1,1
-1,0,0,1,1,1,0,0,0,1,1,0
-0,0,0,1,1,1,0,0,0,1,1,1
-1,1,1,0,1,1,0,0,0,1,1,1
-0,1,1,0,1,1,0,0,0,1,1,0
-1,0,1,0,1,1,0,0,0,1,1,0
-0,0,1,0,1,1,0,0,0,1,1,1
-1,1,0,0,1,1,0,0,0,1,1,1
-0,1,0,0,1,1,0,0,0,1,1,1
-1,0,0,0,1,1,0,0,0,1,1,0
-0,0,0,0,1,1,0,0,0,1,1,0
-1,1,1,1,0,1,0,0,0,1,1,1
-0,1,1,1,0,1,0,0,0,1,1,0
-1,0,1,1,0,1,0,0,0,1,1,0
-0,0,1,1,0,1,0,0,0,1,1,0
-1,1,0,1,0,1,0,0,0,1,1,1
-0,1,0,1,0,1,0,0,0,1,1,1
-1,0,0,1,0,1,0,0,0,1,1,0
-0,0,0,1,0,1,0,0,0,1,1,1
-1,1,1,0,0,1,0,0,0,1,1,1
-0,1,1,0,0,1,0,0,0,1,1,0
-1,0,1,0,0,1,0,0,0,1,1,0
-0,0,1,0,0,1,0,0,0,1,1,0
-1,1,0,0,0,1,0,0,0,1,1,1
-0,1,0,0,0,1,0,0,0,1,1,1
-1,0,0,0,0,1,0,0,0,1,1,0
-0,0,0,0,0,1,0,0,0,1,1,0
-1,1,1,1,1,0,0,0,0,1,1,1
-0,1,1,1,1,0,0,0,0,1,1,0
-1,0,1,1,1,0,0,0,0,1,1,0
-0,0,1,1,1,0,0,0,0,1,1,1
-1,1,0,1,1,0,0,0,0,1,1,1
-0,1,0,1,1,0,0,0,0,1,1,0
-1,0,0,1,1,0,0,0,0,1,1,0
-0,0,0,1,1,0,0,0,0,1,1,1
-1,1,1,0,1,0,0,0,0,1,1,1
-0,1,1,0,1,0,0,0,0,1,1,0
-1,0,1,0,1,0,0,0,0,1,1,0
-0,0,1,0,1,0,0,0,0,1,1,1
-1,1,0,0,1,0,0,0,0,1,1,1
-0,1,0,0,1,0,0,0,0,1,1,0
-1,0,0,0,1,0,0,0,0,1,1,0
-0,0,0,0,1,0,0,0,0,1,1,0
-1,1,1,1,0,0,0,0,0,1,1,1
-0,1,1,1,0,0,0,0,0,1,1,0
-1,0,1,1,0,0,0,0,0,1,1,0
-0,0,1,1,0,0,0,0,0,1,1,0
-1,1,0,1,0,0,0,0,0,1,1,1
-0,1,0,1,0,0,0,0,0,1,1,0
-1,0,0,1,0,0,0,0,0,1,1,0
-0,0,0,1,0,0,0,0,0,1,1,1
-1,1,1,0,0,0,0,0,0,1,1,1
-0,1,1,0,0,0,0,0,0,1,1,0
-1,0,1,0,0,0,0,0,0,1,1,0
-0,0,1,0,0,0,0,0,0,1,1,0
-1,1,0,0,0,0,0,0,0,1,1,1
-0,1,0,0,0,0,0,0,0,1,1,0
-1,0,0,0,0,0,0,0,0,1,1,0
-0,0,0,0,0,0,0,0,0,1,1,0
-1,1,1,1,1,1,1,1,1,0,1,1
-0,1,1,1,1,1,1,1,1,0,1,1
-1,0,1,1,1,1,1,1,1,0,1,1
-0,0,1,1,1,1,1,1,1,0,1,1
-1,1,0,1,1,1,1,1,1,0,1,0
-0,1,0,1,1,1,1,1,1,0,1,1
-1,0,0,1,1,1,1,1,1,0,1,1
-0,0,0,1,1,1,1,1,1,0,1,1
-1,1,1,0,1,1,1,1,1,0,1,1
-0,1,1,0,1,1,1,1,1,0,1,1
-1,0,1,0,1,1,1,1,1,0,1,1
-0,0,1,0,1,1,1,1,1,0,1,1
-1,1,0,0,1,1,1,1,1,0,1,0
-0,1,0,0,1,1,1,1,1,0,1,1
-1,0,0,0,1,1,1,1,1,0,1,1
-0,0,0,0,1,1,1,1,1,0,1,0
-1,1,1,1,0,1,1,1,1,0,1,1
-0,1,1,1,0,1,1,1,1,0,1,1
-1,0,1,1,0,1,1,1,1,0,1,1
-0,0,1,1,0,1,1,1,1,0,1,0
-1,1,0,1,0,1,1,1,1,0,1,0
-0,1,0,1,0,1,1,1,1,0,1,1
-1,0,0,1,0,1,1,1,1,0,1,1
-0,0,0,1,0,1,1,1,1,0,1,1
-1,1,1,0,0,1,1,1,1,0,1,1
-0,1,1,0,0,1,1,1,1,0,1,1
-1,0,1,0,0,1,1,1,1,0,1,1
-0,0,1,0,0,1,1,1,1,0,1,0
-1,1,0,0,0,1,1,1,1,0,1,0
-0,1,0,0,0,1,1,1,1,0,1,1
-1,0,0,0,0,1,1,1,1,0,1,1
-0,0,0,0,0,1,1,1,1,0,1,0
-1,1,1,1,1,0,1,1,1,0,1,1
-0,1,1,1,1,0,1,1,1,0,1,1
-1,0,1,1,1,0,1,1,1,0,1,1
-0,0,1,1,1,0,1,1,1,0,1,1
-1,1,0,1,1,0,1,1,1,0,1,0
-0,1,0,1,1,0,1,1,1,0,1,0
-1,0,0,1,1,0,1,1,1,0,1,1
-0,0,0,1,1,0,1,1,1,0,1,1
-1,1,1,0,1,0,1,1,1,0,1,1
-0,1,1,0,1,0,1,1,1,0,1,1
-1,0,1,0,1,0,1,1,1,0,1,1
-0,0,1,0,1,0,1,1,1,0,1,1
-1,1,0,0,1,0,1,1,1,0,1,0
-0,1,0,0,1,0,1,1,1,0,1,0
-1,0,0,0,1,0,1,1,1,0,1,1
-0,0,0,0,1,0,1,1,1,0,1,0
-1,1,1,1,0,0,1,1,1,0,1,1
-0,1,1,1,0,0,1,1,1,0,1,1
-1,0,1,1,0,0,1,1,1,0,1,1
-0,0,1,1,0,0,1,1,1,0,1,0
-1,1,0,1,0,0,1,1,1,0,1,0
-0,1,0,1,0,0,1,1,1,0,1,0
-1,0,0,1,0,0,1,1,1,0,1,1
-0,0,0,1,0,0,1,1,1,0,1,1
-1,1,1,0,0,0,1,1,1,0,1,1
-0,1,1,0,0,0,1,1,1,0,1,1
-1,0,1,0,0,0,1,1,1,0,1,1
-0,0,1,0,0,0,1,1,1,0,1,0
-1,1,0,0,0,0,1,1,1,0,1,0
-0,1,0,0,0,0,1,1,1,0,1,0
-1,0,0,0,0,0,1,1,1,0,1,1
-0,0,0,0,0,0,1,1,1,0,1,0
-1,1,1,1,1,1,0,1,1,0,1,1
-0,1,1,1,1,1,0,1,1,0,1,0
-1,0,1,1,1,1,0,1,1,0,1,1
-0,0,1,1,1,1,0,1,1,0,1,1
-1,1,0,1,1,1,0,1,1,0,1,0
-0,1,0,1,1,1,0,1,1,0,1,1
-1,0,0,1,1,1,0,1,1,0,1,1
-0,0,0,1,1,1,0,1,1,0,1,1
-1,1,1,0,1,1,0,1,1,0,1,1
-0,1,1,0,1,1,0,1,1,0,1,0
-1,0,1,0,1,1,0,1,1,0,1,1
-0,0,1,0,1,1,0,1,1,0,1,1
-1,1,0,0,1,1,0,1,1,0,1,0
-0,1,0,0,1,1,0,1,1,0,1,1
-1,0,0,0,1,1,0,1,1,0,1,1
-0,0,0,0,1,1,0,1,1,0,1,0
-1,1,1,1,0,1,0,1,1,0,1,1
-0,1,1,1,0,1,0,1,1,0,1,0
-1,0,1,1,0,1,0,1,1,0,1,1
-0,0,1,1,0,1,0,1,1,0,1,0
-1,1,0,1,0,1,0,1,1,0,1,0
-0,1,0,1,0,1,0,1,1,0,1,1
-1,0,0,1,0,1,0,1,1,0,1,1
-0,0,0,1,0,1,0,1,1,0,1,1
-1,1,1,0,0,1,0,1,1,0,1,1
-0,1,1,0,0,1,0,1,1,0,1,0
-1,0,1,0,0,1,0,1,1,0,1,1
-0,0,1,0,0,1,0,1,1,0,1,0
-1,1,0,0,0,1,0,1,1,0,1,0
-0,1,0,0,0,1,0,1,1,0,1,1
-1,0,0,0,0,1,0,1,1,0,1,1
-0,0,0,0,0,1,0,1,1,0,1,0
-1,1,1,1,1,0,0,1,1,0,1,1
-0,1,1,1,1,0,0,1,1,0,1,0
-1,0,1,1,1,0,0,1,1,0,1,1
-0,0,1,1,1,0,0,1,1,0,1,1
-1,1,0,1,1,0,0,1,1,0,1,0
-0,1,0,1,1,0,0,1,1,0,1,0
-1,0,0,1,1,0,0,1,1,0,1,1
-0,0,0,1,1,0,0,1,1,0,1,1
-1,1,1,0,1,0,0,1,1,0,1,1
-0,1,1,0,1,0,0,1,1,0,1,0
-1,0,1,0,1,0,0,1,1,0,1,1
-0,0,1,0,1,0,0,1,1,0,1,1
-1,1,0,0,1,0,0,1,1,0,1,0
-0,1,0,0,1,0,0,1,1,0,1,0
-1,0,0,0,1,0,0,1,1,0,1,1
-0,0,0,0,1,0,0,1,1,0,1,0
-1,1,1,1,0,0,0,1,1,0,1,1
-0,1,1,1,0,0,0,1,1,0,1,0
-1,0,1,1,0,0,0,1,1,0,1,1
-0,0,1,1,0,0,0,1,1,0,1,0
-1,1,0,1,0,0,0,1,1,0,1,0
-0,1,0,1,0,0,0,1,1,0,1,0
-1,0,0,1,0,0,0,1,1,0,1,1
-0,0,0,1,0,0,0,1,1,0,1,1
-1,1,1,0,0,0,0,1,1,0,1,1
-0,1,1,0,0,0,0,1,1,0,1,0
-1,0,1,0,0,0,0,1,1,0,1,1
-0,0,1,0,0,0,0,1,1,0,1,0
-1,1,0,0,0,0,0,1,1,0,1,0
-0,1,0,0,0,0,0,1,1,0,1,0
-1,0,0,0,0,0,0,1,1,0,1,1
-0,0,0,0,0,0,0,1,1,0,1,0
-1,1,1,1,1,1,1,0,1,0,1,1
-0,1,1,1,1,1,1,0,1,0,1,1
-1,0,1,1,1,1,1,0,1,0,1,1
-0,0,1,1,1,1,1,0,1,0,1,1
-1,1,0,1,1,1,1,0,1,0,1,0
-0,1,0,1,1,1,1,0,1,0,1,1
-1,0,0,1,1,1,1,0,1,0,1,0
-0,0,0,1,1,1,1,0,1,0,1,1
-1,1,1,0,1,1,1,0,1,0,1,1
-0,1,1,0,1,1,1,0,1,0,1,1
-1,0,1,0,1,1,1,0,1,0,1,1
-0,0,1,0,1,1,1,0,1,0,1,1
-1,1,0,0,1,1,1,0,1,0,1,0
-0,1,0,0,1,1,1,0,1,0,1,1
-1,0,0,0,1,1,1,0,1,0,1,0
-0,0,0,0,1,1,1,0,1,0,1,0
-1,1,1,1,0,1,1,0,1,0,1,1
-0,1,1,1,0,1,1,0,1,0,1,1
-1,0,1,1,0,1,1,0,1,0,1,1
-0,0,1,1,0,1,1,0,1,0,1,0
-1,1,0,1,0,1,1,0,1,0,1,0
-0,1,0,1,0,1,1,0,1,0,1,1
-1,0,0,1,0,1,1,0,1,0,1,0
-0,0,0,1,0,1,1,0,1,0,1,1
-1,1,1,0,0,1,1,0,1,0,1,1
-0,1,1,0,0,1,1,0,1,0,1,1
-1,0,1,0,0,1,1,0,1,0,1,1
-0,0,1,0,0,1,1,0,1,0,1,0
-1,1,0,0,0,1,1,0,1,0,1,0
-0,1,0,0,0,1,1,0,1,0,1,1
-1,0,0,0,0,1,1,0,1,0,1,0
-0,0,0,0,0,1,1,0,1,0,1,0
-1,1,1,1,1,0,1,0,1,0,1,1
-0,1,1,1,1,0,1,0,1,0,1,1
-1,0,1,1,1,0,1,0,1,0,1,1
-0,0,1,1,1,0,1,0,1,0,1,1
-1,1,0,1,1,0,1,0,1,0,1,0
-0,1,0,1,1,0,1,0,1,0,1,0
-1,0,0,1,1,0,1,0,1,0,1,0
-0,0,0,1,1,0,1,0,1,0,1,1
-1,1,1,0,1,0,1,0,1,0,1,1
-0,1,1,0,1,0,1,0,1,0,1,1
-1,0,1,0,1,0,1,0,1,0,1,1
-0,0,1,0,1,0,1,0,1,0,1,1
-1,1,0,0,1,0,1,0,1,0,1,0
-0,1,0,0,1,0,1,0,1,0,1,0
-1,0,0,0,1,0,1,0,1,0,1,0
-0,0,0,0,1,0,1,0,1,0,1,0
-1,1,1,1,0,0,1,0,1,0,1,1
-0,1,1,1,0,0,1,0,1,0,1,1
-1,0,1,1,0,0,1,0,1,0,1,1
-0,0,1,1,0,0,1,0,1,0,1,0
-1,1,0,1,0,0,1,0,1,0,1,0
-0,1,0,1,0,0,1,0,1,0,1,0
-1,0,0,1,0,0,1,0,1,0,1,0
-0,0,0,1,0,0,1,0,1,0,1,1
-1,1,1,0,0,0,1,0,1,0,1,1
-0,1,1,0,0,0,1,0,1,0,1,1
-1,0,1,0,0,0,1,0,1,0,1,1
-0,0,1,0,0,0,1,0,1,0,1,0
-1,1,0,0,0,0,1,0,1,0,1,0
-0,1,0,0,0,0,1,0,1,0,1,0
-1,0,0,0,0,0,1,0,1,0,1,0
-0,0,0,0,0,0,1,0,1,0,1,0
-1,1,1,1,1,1,0,0,1,0,1,1
-0,1,1,1,1,1,0,0,1,0,1,0
-1,0,1,1,1,1,0,0,1,0,1,1
-0,0,1,1,1,1,0,0,1,0,1,1
-1,1,0,1,1,1,0,0,1,0,1,0
-0,1,0,1,1,1,0,0,1,0,1,1
-1,0,0,1,1,1,0,0,1,0,1,0
-0,0,0,1,1,1,0,0,1,0,1,1
-1,1,1,0,1,1,0,0,1,0,1,1
-0,1,1,0,1,1,0,0,1,0,1,0
-1,0,1,0,1,1,0,0,1,0,1,1
-0,0,1,0,1,1,0,0,1,0,1,1
-1,1,0,0,1,1,0,0,1,0,1,0
-0,1,0,0,1,1,0,0,1,0,1,1
-1,0,0,0,1,1,0,0,1,0,1,0
-0,0,0,0,1,1,0,0,1,0,1,0
-1,1,1,1,0,1,0,0,1,0,1,1
-0,1,1,1,0,1,0,0,1,0,1,0
-1,0,1,1,0,1,0,0,1,0,1,1
-0,0,1,1,0,1,0,0,1,0,1,0
-1,1,0,1,0,1,0,0,1,0,1,0
-0,1,0,1,0,1,0,0,1,0,1,1
-1,0,0,1,0,1,0,0,1,0,1,0
-0,0,0,1,0,1,0,0,1,0,1,1
-1,1,1,0,0,1,0,0,1,0,1,1
-0,1,1,0,0,1,0,0,1,0,1,0
-1,0,1,0,0,1,0,0,1,0,1,1
-0,0,1,0,0,1,0,0,1,0,1,0
-1,1,0,0,0,1,0,0,1,0,1,0
-0,1,0,0,0,1,0,0,1,0,1,1
-1,0,0,0,0,1,0,0,1,0,1,0
-0,0,0,0,0,1,0,0,1,0,1,0
-1,1,1,1,1,0,0,0,1,0,1,1
-0,1,1,1,1,0,0,0,1,0,1,0
-1,0,1,1,1,0,0,0,1,0,1,1
-0,0,1,1,1,0,0,0,1,0,1,1
-1,1,0,1,1,0,0,0,1,0,1,0
-0,1,0,1,1,0,0,0,1,0,1,0
-1,0,0,1,1,0,0,0,1,0,1,0
-0,0,0,1,1,0,0,0,1,0,1,1
-1,1,1,0,1,0,0,0,1,0,1,1
-0,1,1,0,1,0,0,0,1,0,1,0
-1,0,1,0,1,0,0,0,1,0,1,1
-0,0,1,0,1,0,0,0,1,0,1,1
-1,1,0,0,1,0,0,0,1,0,1,0
-0,1,0,0,1,0,0,0,1,0,1,0
-1,0,0,0,1,0,0,0,1,0,1,0
-0,0,0,0,1,0,0,0,1,0,1,0
-1,1,1,1,0,0,0,0,1,0,1,1
-0,1,1,1,0,0,0,0,1,0,1,0
-1,0,1,1,0,0,0,0,1,0,1,1
-0,0,1,1,0,0,0,0,1,0,1,0
-1,1,0,1,0,0,0,0,1,0,1,0
-0,1,0,1,0,0,0,0,1,0,1,0
-1,0,0,1,0,0,0,0,1,0,1,0
-0,0,0,1,0,0,0,0,1,0,1,1
-1,1,1,0,0,0,0,0,1,0,1,1
-0,1,1,0,0,0,0,0,1,0,1,0
-1,0,1,0,0,0,0,0,1,0,1,1
-0,0,1,0,0,0,0,0,1,0,1,0
-1,1,0,0,0,0,0,0,1,0,1,0
-0,1,0,0,0,0,0,0,1,0,1,0
-1,0,0,0,0,0,0,0,1,0,1,0
-0,0,0,0,0,0,0,0,1,0,1,0
-1,1,1,1,1,1,1,1,0,0,1,1
-0,1,1,1,1,1,1,1,0,0,1,1
-1,0,1,1,1,1,1,1,0,0,1,0
-0,0,1,1,1,1,1,1,0,0,1,1
-1,1,0,1,1,1,1,1,0,0,1,0
-0,1,0,1,1,1,1,1,0,0,1,1
-1,0,0,1,1,1,1,1,0,0,1,1
-0,0,0,1,1,1,1,1,0,0,1,1
-1,1,1,0,1,1,1,1,0,0,1,1
-0,1,1,0,1,1,1,1,0,0,1,1
-1,0,1,0,1,1,1,1,0,0,1,0
-0,0,1,0,1,1,1,1,0,0,1,1
-1,1,0,0,1,1,1,1,0,0,1,0
-0,1,0,0,1,1,1,1,0,0,1,1
-1,0,0,0,1,1,1,1,0,0,1,1
-0,0,0,0,1,1,1,1,0,0,1,0
-1,1,1,1,0,1,1,1,0,0,1,1
-0,1,1,1,0,1,1,1,0,0,1,1
-1,0,1,1,0,1,1,1,0,0,1,0
-0,0,1,1,0,1,1,1,0,0,1,0
-1,1,0,1,0,1,1,1,0,0,1,0
-0,1,0,1,0,1,1,1,0,0,1,1
-1,0,0,1,0,1,1,1,0,0,1,1
-0,0,0,1,0,1,1,1,0,0,1,1
-1,1,1,0,0,1,1,1,0,0,1,1
-0,1,1,0,0,1,1,1,0,0,1,1
-1,0,1,0,0,1,1,1,0,0,1,0
-0,0,1,0,0,1,1,1,0,0,1,0
-1,1,0,0,0,1,1,1,0,0,1,0
-0,1,0,0,0,1,1,1,0,0,1,1
-1,0,0,0,0,1,1,1,0,0,1,1
-0,0,0,0,0,1,1,1,0,0,1,0
-1,1,1,1,1,0,1,1,0,0,1,1
-0,1,1,1,1,0,1,1,0,0,1,1
-1,0,1,1,1,0,1,1,0,0,1,0
-0,0,1,1,1,0,1,1,0,0,1,1
-1,1,0,1,1,0,1,1,0,0,1,0
-0,1,0,1,1,0,1,1,0,0,1,0
-1,0,0,1,1,0,1,1,0,0,1,1
-0,0,0,1,1,0,1,1,0,0,1,1
-1,1,1,0,1,0,1,1,0,0,1,1
-0,1,1,0,1,0,1,1,0,0,1,1
-1,0,1,0,1,0,1,1,0,0,1,0
-0,0,1,0,1,0,1,1,0,0,1,1
-1,1,0,0,1,0,1,1,0,0,1,0
-0,1,0,0,1,0,1,1,0,0,1,0
-1,0,0,0,1,0,1,1,0,0,1,1
-0,0,0,0,1,0,1,1,0,0,1,0
-1,1,1,1,0,0,1,1,0,0,1,1
-0,1,1,1,0,0,1,1,0,0,1,1
-1,0,1,1,0,0,1,1,0,0,1,0
-0,0,1,1,0,0,1,1,0,0,1,0
-1,1,0,1,0,0,1,1,0,0,1,0
-0,1,0,1,0,0,1,1,0,0,1,0
-1,0,0,1,0,0,1,1,0,0,1,1
-0,0,0,1,0,0,1,1,0,0,1,1
-1,1,1,0,0,0,1,1,0,0,1,1
-0,1,1,0,0,0,1,1,0,0,1,1
-1,0,1,0,0,0,1,1,0,0,1,0
-0,0,1,0,0,0,1,1,0,0,1,0
-1,1,0,0,0,0,1,1,0,0,1,0
-0,1,0,0,0,0,1,1,0,0,1,0
-1,0,0,0,0,0,1,1,0,0,1,1
-0,0,0,0,0,0,1,1,0,0,1,0
-1,1,1,1,1,1,0,1,0,0,1,1
-0,1,1,1,1,1,0,1,0,0,1,0
-1,0,1,1,1,1,0,1,0,0,1,0
-0,0,1,1,1,1,0,1,0,0,1,1
-1,1,0,1,1,1,0,1,0,0,1,0
-0,1,0,1,1,1,0,1,0,0,1,1
-1,0,0,1,1,1,0,1,0,0,1,1
-0,0,0,1,1,1,0,1,0,0,1,1
-1,1,1,0,1,1,0,1,0,0,1,1
-0,1,1,0,1,1,0,1,0,0,1,0
-1,0,1,0,1,1,0,1,0,0,1,0
-0,0,1,0,1,1,0,1,0,0,1,1
-1,1,0,0,1,1,0,1,0,0,1,0
-0,1,0,0,1,1,0,1,0,0,1,1
-1,0,0,0,1,1,0,1,0,0,1,1
-0,0,0,0,1,1,0,1,0,0,1,0
-1,1,1,1,0,1,0,1,0,0,1,1
-0,1,1,1,0,1,0,1,0,0,1,0
-1,0,1,1,0,1,0,1,0,0,1,0
-0,0,1,1,0,1,0,1,0,0,1,0
-1,1,0,1,0,1,0,1,0,0,1,0
-0,1,0,1,0,1,0,1,0,0,1,1
-1,0,0,1,0,1,0,1,0,0,1,1
-0,0,0,1,0,1,0,1,0,0,1,1
-1,1,1,0,0,1,0,1,0,0,1,1
-0,1,1,0,0,1,0,1,0,0,1,0
-1,0,1,0,0,1,0,1,0,0,1,0
-0,0,1,0,0,1,0,1,0,0,1,0
-1,1,0,0,0,1,0,1,0,0,1,0
-0,1,0,0,0,1,0,1,0,0,1,1
-1,0,0,0,0,1,0,1,0,0,1,1
-0,0,0,0,0,1,0,1,0,0,1,0
-1,1,1,1,1,0,0,1,0,0,1,1
-0,1,1,1,1,0,0,1,0,0,1,0
-1,0,1,1,1,0,0,1,0,0,1,0
-0,0,1,1,1,0,0,1,0,0,1,1
-1,1,0,1,1,0,0,1,0,0,1,0
-0,1,0,1,1,0,0,1,0,0,1,0
-1,0,0,1,1,0,0,1,0,0,1,1
-0,0,0,1,1,0,0,1,0,0,1,1
-1,1,1,0,1,0,0,1,0,0,1,1
-0,1,1,0,1,0,0,1,0,0,1,0
-1,0,1,0,1,0,0,1,0,0,1,0
-0,0,1,0,1,0,0,1,0,0,1,1
-1,1,0,0,1,0,0,1,0,0,1,0
-0,1,0,0,1,0,0,1,0,0,1,0
-1,0,0,0,1,0,0,1,0,0,1,1
-0,0,0,0,1,0,0,1,0,0,1,0
-1,1,1,1,0,0,0,1,0,0,1,1
-0,1,1,1,0,0,0,1,0,0,1,0
-1,0,1,1,0,0,0,1,0,0,1,0
-0,0,1,1,0,0,0,1,0,0,1,0
-1,1,0,1,0,0,0,1,0,0,1,0
-0,1,0,1,0,0,0,1,0,0,1,0
-1,0,0,1,0,0,0,1,0,0,1,1
-0,0,0,1,0,0,0,1,0,0,1,1
-1,1,1,0,0,0,0,1,0,0,1,1
-0,1,1,0,0,0,0,1,0,0,1,0
-1,0,1,0,0,0,0,1,0,0,1,0
-0,0,1,0,0,0,0,1,0,0,1,0
-1,1,0,0,0,0,0,1,0,0,1,0
-0,1,0,0,0,0,0,1,0,0,1,0
-1,0,0,0,0,0,0,1,0,0,1,1
-0,0,0,0,0,0,0,1,0,0,1,0
-1,1,1,1,1,1,1,0,0,0,1,1
-0,1,1,1,1,1,1,0,0,0,1,1
-1,0,1,1,1,1,1,0,0,0,1,0
-0,0,1,1,1,1,1,0,0,0,1,1
-1,1,0,1,1,1,1,0,0,0,1,0
-0,1,0,1,1,1,1,0,0,0,1,1
-1,0,0,1,1,1,1,0,0,0,1,0
-0,0,0,1,1,1,1,0,0,0,1,1
-1,1,1,0,1,1,1,0,0,0,1,1
-0,1,1,0,1,1,1,0,0,0,1,1
-1,0,1,0,1,1,1,0,0,0,1,0
-0,0,1,0,1,1,1,0,0,0,1,1
-1,1,0,0,1,1,1,0,0,0,1,0
-0,1,0,0,1,1,1,0,0,0,1,1
-1,0,0,0,1,1,1,0,0,0,1,0
-0,0,0,0,1,1,1,0,0,0,1,0
-1,1,1,1,0,1,1,0,0,0,1,1
-0,1,1,1,0,1,1,0,0,0,1,1
-1,0,1,1,0,1,1,0,0,0,1,0
-0,0,1,1,0,1,1,0,0,0,1,0
-1,1,0,1,0,1,1,0,0,0,1,0
-0,1,0,1,0,1,1,0,0,0,1,1
-1,0,0,1,0,1,1,0,0,0,1,0
-0,0,0,1,0,1,1,0,0,0,1,1
-1,1,1,0,0,1,1,0,0,0,1,1
-0,1,1,0,0,1,1,0,0,0,1,1
-1,0,1,0,0,1,1,0,0,0,1,0
-0,0,1,0,0,1,1,0,0,0,1,0
-1,1,0,0,0,1,1,0,0,0,1,0
-0,1,0,0,0,1,1,0,0,0,1,1
-1,0,0,0,0,1,1,0,0,0,1,0
-0,0,0,0,0,1,1,0,0,0,1,0
-1,1,1,1,1,0,1,0,0,0,1,1
-0,1,1,1,1,0,1,0,0,0,1,1
-1,0,1,1,1,0,1,0,0,0,1,0
-0,0,1,1,1,0,1,0,0,0,1,1
-1,1,0,1,1,0,1,0,0,0,1,0
-0,1,0,1,1,0,1,0,0,0,1,0
-1,0,0,1,1,0,1,0,0,0,1,0
-0,0,0,1,1,0,1,0,0,0,1,1
-1,1,1,0,1,0,1,0,0,0,1,1
-0,1,1,0,1,0,1,0,0,0,1,1
-1,0,1,0,1,0,1,0,0,0,1,0
-0,0,1,0,1,0,1,0,0,0,1,1
-1,1,0,0,1,0,1,0,0,0,1,0
-0,1,0,0,1,0,1,0,0,0,1,0
-1,0,0,0,1,0,1,0,0,0,1,0
-0,0,0,0,1,0,1,0,0,0,1,0
-1,1,1,1,0,0,1,0,0,0,1,1
-0,1,1,1,0,0,1,0,0,0,1,1
-1,0,1,1,0,0,1,0,0,0,1,0
-0,0,1,1,0,0,1,0,0,0,1,0
-1,1,0,1,0,0,1,0,0,0,1,0
-0,1,0,1,0,0,1,0,0,0,1,0
-1,0,0,1,0,0,1,0,0,0,1,0
-0,0,0,1,0,0,1,0,0,0,1,1
-1,1,1,0,0,0,1,0,0,0,1,1
-0,1,1,0,0,0,1,0,0,0,1,1
-1,0,1,0,0,0,1,0,0,0,1,0
-0,0,1,0,0,0,1,0,0,0,1,0
-1,1,0,0,0,0,1,0,0,0,1,0
-0,1,0,0,0,0,1,0,0,0,1,0
-1,0,0,0,0,0,1,0,0,0,1,0
-0,0,0,0,0,0,1,0,0,0,1,0
-1,1,1,1,1,1,0,0,0,0,1,1
-0,1,1,1,1,1,0,0,0,0,1,0
-1,0,1,1,1,1,0,0,0,0,1,0
-0,0,1,1,1,1,0,0,0,0,1,1
-1,1,0,1,1,1,0,0,0,0,1,0
-0,1,0,1,1,1,0,0,0,0,1,1
-1,0,0,1,1,1,0,0,0,0,1,0
-0,0,0,1,1,1,0,0,0,0,1,1
-1,1,1,0,1,1,0,0,0,0,1,1
-0,1,1,0,1,1,0,0,0,0,1,0
-1,0,1,0,1,1,0,0,0,0,1,0
-0,0,1,0,1,1,0,0,0,0,1,1
-1,1,0,0,1,1,0,0,0,0,1,0
-0,1,0,0,1,1,0,0,0,0,1,1
-1,0,0,0,1,1,0,0,0,0,1,0
-0,0,0,0,1,1,0,0,0,0,1,0
-1,1,1,1,0,1,0,0,0,0,1,1
-0,1,1,1,0,1,0,0,0,0,1,0
-1,0,1,1,0,1,0,0,0,0,1,0
-0,0,1,1,0,1,0,0,0,0,1,0
-1,1,0,1,0,1,0,0,0,0,1,0
-0,1,0,1,0,1,0,0,0,0,1,1
-1,0,0,1,0,1,0,0,0,0,1,0
-0,0,0,1,0,1,0,0,0,0,1,1
-1,1,1,0,0,1,0,0,0,0,1,1
-0,1,1,0,0,1,0,0,0,0,1,0
-1,0,1,0,0,1,0,0,0,0,1,0
-0,0,1,0,0,1,0,0,0,0,1,0
-1,1,0,0,0,1,0,0,0,0,1,0
-0,1,0,0,0,1,0,0,0,0,1,1
-1,0,0,0,0,1,0,0,0,0,1,0
-0,0,0,0,0,1,0,0,0,0,1,0
-1,1,1,1,1,0,0,0,0,0,1,1
-0,1,1,1,1,0,0,0,0,0,1,0
-1,0,1,1,1,0,0,0,0,0,1,0
-0,0,1,1,1,0,0,0,0,0,1,1
-1,1,0,1,1,0,0,0,0,0,1,0
-0,1,0,1,1,0,0,0,0,0,1,0
-1,0,0,1,1,0,0,0,0,0,1,0
-0,0,0,1,1,0,0,0,0,0,1,1
-1,1,1,0,1,0,0,0,0,0,1,1
-0,1,1,0,1,0,0,0,0,0,1,0
-1,0,1,0,1,0,0,0,0,0,1,0
-0,0,1,0,1,0,0,0,0,0,1,1
-1,1,0,0,1,0,0,0,0,0,1,0
-0,1,0,0,1,0,0,0,0,0,1,0
-1,0,0,0,1,0,0,0,0,0,1,0
-0,0,0,0,1,0,0,0,0,0,1,0
-1,1,1,1,0,0,0,0,0,0,1,1
-0,1,1,1,0,0,0,0,0,0,1,0
-1,0,1,1,0,0,0,0,0,0,1,0
-0,0,1,1,0,0,0,0,0,0,1,0
-1,1,0,1,0,0,0,0,0,0,1,0
-0,1,0,1,0,0,0,0,0,0,1,0
-1,0,0,1,0,0,0,0,0,0,1,0
-0,0,0,1,0,0,0,0,0,0,1,1
-1,1,1,0,0,0,0,0,0,0,1,1
-0,1,1,0,0,0,0,0,0,0,1,0
-1,0,1,0,0,0,0,0,0,0,1,0
-0,0,1,0,0,0,0,0,0,0,1,0
-1,1,0,0,0,0,0,0,0,0,1,0
-0,1,0,0,0,0,0,0,0,0,1,0
-1,0,0,0,0,0,0,0,0,0,1,0
-0,0,0,0,0,0,0,0,0,0,1,0
-1,1,1,1,1,1,1,1,1,1,0,0
-0,1,1,1,1,1,1,1,1,1,0,1
-1,0,1,1,1,1,1,1,1,1,0,1
-0,0,1,1,1,1,1,1,1,1,0,1
-1,1,0,1,1,1,1,1,1,1,0,1
-0,1,0,1,1,1,1,1,1,1,0,1
-1,0,0,1,1,1,1,1,1,1,0,1
-0,0,0,1,1,1,1,1,1,1,0,1
-1,1,1,0,1,1,1,1,1,1,0,0
-0,1,1,0,1,1,1,1,1,1,0,1
-1,0,1,0,1,1,1,1,1,1,0,1
-0,0,1,0,1,1,1,1,1,1,0,1
-1,1,0,0,1,1,1,1,1,1,0,1
-0,1,0,0,1,1,1,1,1,1,0,1
-1,0,0,0,1,1,1,1,1,1,0,1
-0,0,0,0,1,1,1,1,1,1,0,0
-1,1,1,1,0,1,1,1,1,1,0,0
-0,1,1,1,0,1,1,1,1,1,0,1
-1,0,1,1,0,1,1,1,1,1,0,1
-0,0,1,1,0,1,1,1,1,1,0,0
-1,1,0,1,0,1,1,1,1,1,0,1
-0,1,0,1,0,1,1,1,1,1,0,1
-1,0,0,1,0,1,1,1,1,1,0,1
-0,0,0,1,0,1,1,1,1,1,0,1
-1,1,1,0,0,1,1,1,1,1,0,0
-0,1,1,0,0,1,1,1,1,1,0,1
-1,0,1,0,0,1,1,1,1,1,0,1
-0,0,1,0,0,1,1,1,1,1,0,0
-1,1,0,0,0,1,1,1,1,1,0,1
-0,1,0,0,0,1,1,1,1,1,0,1
-1,0,0,0,0,1,1,1,1,1,0,1
-0,0,0,0,0,1,1,1,1,1,0,0
-1,1,1,1,1,0,1,1,1,1,0,0
-0,1,1,1,1,0,1,1,1,1,0,1
-1,0,1,1,1,0,1,1,1,1,0,1
-0,0,1,1,1,0,1,1,1,1,0,1
-1,1,0,1,1,0,1,1,1,1,0,1
-0,1,0,1,1,0,1,1,1,1,0,0
-1,0,0,1,1,0,1,1,1,1,0,1
-0,0,0,1,1,0,1,1,1,1,0,1
-1,1,1,0,1,0,1,1,1,1,0,0
-0,1,1,0,1,0,1,1,1,1,0,1
-1,0,1,0,1,0,1,1,1,1,0,1
-0,0,1,0,1,0,1,1,1,1,0,1
-1,1,0,0,1,0,1,1,1,1,0,1
-0,1,0,0,1,0,1,1,1,1,0,0
-1,0,0,0,1,0,1,1,1,1,0,1
-0,0,0,0,1,0,1,1,1,1,0,0
-1,1,1,1,0,0,1,1,1,1,0,0
-0,1,1,1,0,0,1,1,1,1,0,1
-1,0,1,1,0,0,1,1,1,1,0,1
-0,0,1,1,0,0,1,1,1,1,0,0
-1,1,0,1,0,0,1,1,1,1,0,1
-0,1,0,1,0,0,1,1,1,1,0,0
-1,0,0,1,0,0,1,1,1,1,0,1
-0,0,0,1,0,0,1,1,1,1,0,1
-1,1,1,0,0,0,1,1,1,1,0,0
-0,1,1,0,0,0,1,1,1,1,0,1
-1,0,1,0,0,0,1,1,1,1,0,1
-0,0,1,0,0,0,1,1,1,1,0,0
-1,1,0,0,0,0,1,1,1,1,0,1
-0,1,0,0,0,0,1,1,1,1,0,0
-1,0,0,0,0,0,1,1,1,1,0,1
-0,0,0,0,0,0,1,1,1,1,0,0
-1,1,1,1,1,1,0,1,1,1,0,0
-0,1,1,1,1,1,0,1,1,1,0,0
-1,0,1,1,1,1,0,1,1,1,0,1
-0,0,1,1,1,1,0,1,1,1,0,1
-1,1,0,1,1,1,0,1,1,1,0,1
-0,1,0,1,1,1,0,1,1,1,0,1
-1,0,0,1,1,1,0,1,1,1,0,1
-0,0,0,1,1,1,0,1,1,1,0,1
-1,1,1,0,1,1,0,1,1,1,0,0
-0,1,1,0,1,1,0,1,1,1,0,0
-1,0,1,0,1,1,0,1,1,1,0,1
-0,0,1,0,1,1,0,1,1,1,0,1
-1,1,0,0,1,1,0,1,1,1,0,1
-0,1,0,0,1,1,0,1,1,1,0,1
-1,0,0,0,1,1,0,1,1,1,0,1
-0,0,0,0,1,1,0,1,1,1,0,0
-1,1,1,1,0,1,0,1,1,1,0,0
-0,1,1,1,0,1,0,1,1,1,0,0
-1,0,1,1,0,1,0,1,1,1,0,1
-0,0,1,1,0,1,0,1,1,1,0,0
-1,1,0,1,0,1,0,1,1,1,0,1
-0,1,0,1,0,1,0,1,1,1,0,1
-1,0,0,1,0,1,0,1,1,1,0,1
-0,0,0,1,0,1,0,1,1,1,0,1
-1,1,1,0,0,1,0,1,1,1,0,0
-0,1,1,0,0,1,0,1,1,1,0,0
-1,0,1,0,0,1,0,1,1,1,0,1
-0,0,1,0,0,1,0,1,1,1,0,0
-1,1,0,0,0,1,0,1,1,1,0,1
-0,1,0,0,0,1,0,1,1,1,0,1
-1,0,0,0,0,1,0,1,1,1,0,1
-0,0,0,0,0,1,0,1,1,1,0,0
-1,1,1,1,1,0,0,1,1,1,0,0
-0,1,1,1,1,0,0,1,1,1,0,0
-1,0,1,1,1,0,0,1,1,1,0,1
-0,0,1,1,1,0,0,1,1,1,0,1
-1,1,0,1,1,0,0,1,1,1,0,1
-0,1,0,1,1,0,0,1,1,1,0,0
-1,0,0,1,1,0,0,1,1,1,0,1
-0,0,0,1,1,0,0,1,1,1,0,1
-1,1,1,0,1,0,0,1,1,1,0,0
-0,1,1,0,1,0,0,1,1,1,0,0
-1,0,1,0,1,0,0,1,1,1,0,1
-0,0,1,0,1,0,0,1,1,1,0,1
-1,1,0,0,1,0,0,1,1,1,0,1
-0,1,0,0,1,0,0,1,1,1,0,0
-1,0,0,0,1,0,0,1,1,1,0,1
-0,0,0,0,1,0,0,1,1,1,0,0
-1,1,1,1,0,0,0,1,1,1,0,0
-0,1,1,1,0,0,0,1,1,1,0,0
-1,0,1,1,0,0,0,1,1,1,0,1
-0,0,1,1,0,0,0,1,1,1,0,0
-1,1,0,1,0,0,0,1,1,1,0,1
-0,1,0,1,0,0,0,1,1,1,0,0
-1,0,0,1,0,0,0,1,1,1,0,1
-0,0,0,1,0,0,0,1,1,1,0,1
-1,1,1,0,0,0,0,1,1,1,0,0
-0,1,1,0,0,0,0,1,1,1,0,0
-1,0,1,0,0,0,0,1,1,1,0,1
-0,0,1,0,0,0,0,1,1,1,0,0
-1,1,0,0,0,0,0,1,1,1,0,1
-0,1,0,0,0,0,0,1,1,1,0,0
-1,0,0,0,0,0,0,1,1,1,0,1
-0,0,0,0,0,0,0,1,1,1,0,0
-1,1,1,1,1,1,1,0,1,1,0,0
-0,1,1,1,1,1,1,0,1,1,0,1
-1,0,1,1,1,1,1,0,1,1,0,1
-0,0,1,1,1,1,1,0,1,1,0,1
-1,1,0,1,1,1,1,0,1,1,0,1
-0,1,0,1,1,1,1,0,1,1,0,1
-1,0,0,1,1,1,1,0,1,1,0,0
-0,0,0,1,1,1,1,0,1,1,0,1
-1,1,1,0,1,1,1,0,1,1,0,0
-0,1,1,0,1,1,1,0,1,1,0,1
-1,0,1,0,1,1,1,0,1,1,0,1
-0,0,1,0,1,1,1,0,1,1,0,1
-1,1,0,0,1,1,1,0,1,1,0,1
-0,1,0,0,1,1,1,0,1,1,0,1
-1,0,0,0,1,1,1,0,1,1,0,0
-0,0,0,0,1,1,1,0,1,1,0,0
-1,1,1,1,0,1,1,0,1,1,0,0
-0,1,1,1,0,1,1,0,1,1,0,1
-1,0,1,1,0,1,1,0,1,1,0,1
-0,0,1,1,0,1,1,0,1,1,0,0
-1,1,0,1,0,1,1,0,1,1,0,1
-0,1,0,1,0,1,1,0,1,1,0,1
-1,0,0,1,0,1,1,0,1,1,0,0
-0,0,0,1,0,1,1,0,1,1,0,1
-1,1,1,0,0,1,1,0,1,1,0,0
-0,1,1,0,0,1,1,0,1,1,0,1
-1,0,1,0,0,1,1,0,1,1,0,1
-0,0,1,0,0,1,1,0,1,1,0,0
-1,1,0,0,0,1,1,0,1,1,0,1
-0,1,0,0,0,1,1,0,1,1,0,1
-1,0,0,0,0,1,1,0,1,1,0,0
-0,0,0,0,0,1,1,0,1,1,0,0
-1,1,1,1,1,0,1,0,1,1,0,0
-0,1,1,1,1,0,1,0,1,1,0,1
-1,0,1,1,1,0,1,0,1,1,0,1
-0,0,1,1,1,0,1,0,1,1,0,1
-1,1,0,1,1,0,1,0,1,1,0,1
-0,1,0,1,1,0,1,0,1,1,0,0
-1,0,0,1,1,0,1,0,1,1,0,0
-0,0,0,1,1,0,1,0,1,1,0,1
-1,1,1,0,1,0,1,0,1,1,0,0
-0,1,1,0,1,0,1,0,1,1,0,1
-1,0,1,0,1,0,1,0,1,1,0,1
-0,0,1,0,1,0,1,0,1,1,0,1
-1,1,0,0,1,0,1,0,1,1,0,1
-0,1,0,0,1,0,1,0,1,1,0,0
-1,0,0,0,1,0,1,0,1,1,0,0
-0,0,0,0,1,0,1,0,1,1,0,0
-1,1,1,1,0,0,1,0,1,1,0,0
-0,1,1,1,0,0,1,0,1,1,0,1
-1,0,1,1,0,0,1,0,1,1,0,1
-0,0,1,1,0,0,1,0,1,1,0,0
-1,1,0,1,0,0,1,0,1,1,0,1
-0,1,0,1,0,0,1,0,1,1,0,0
-1,0,0,1,0,0,1,0,1,1,0,0
-0,0,0,1,0,0,1,0,1,1,0,1
-1,1,1,0,0,0,1,0,1,1,0,0
-0,1,1,0,0,0,1,0,1,1,0,1
-1,0,1,0,0,0,1,0,1,1,0,1
-0,0,1,0,0,0,1,0,1,1,0,0
-1,1,0,0,0,0,1,0,1,1,0,1
-0,1,0,0,0,0,1,0,1,1,0,0
-1,0,0,0,0,0,1,0,1,1,0,0
-0,0,0,0,0,0,1,0,1,1,0,0
-1,1,1,1,1,1,0,0,1,1,0,0
-0,1,1,1,1,1,0,0,1,1,0,0
-1,0,1,1,1,1,0,0,1,1,0,1
-0,0,1,1,1,1,0,0,1,1,0,1
-1,1,0,1,1,1,0,0,1,1,0,1
-0,1,0,1,1,1,0,0,1,1,0,1
-1,0,0,1,1,1,0,0,1,1,0,0
-0,0,0,1,1,1,0,0,1,1,0,1
-1,1,1,0,1,1,0,0,1,1,0,0
-0,1,1,0,1,1,0,0,1,1,0,0
-1,0,1,0,1,1,0,0,1,1,0,1
-0,0,1,0,1,1,0,0,1,1,0,1
-1,1,0,0,1,1,0,0,1,1,0,1
-0,1,0,0,1,1,0,0,1,1,0,1
-1,0,0,0,1,1,0,0,1,1,0,0
-0,0,0,0,1,1,0,0,1,1,0,0
-1,1,1,1,0,1,0,0,1,1,0,0
-0,1,1,1,0,1,0,0,1,1,0,0
-1,0,1,1,0,1,0,0,1,1,0,1
-0,0,1,1,0,1,0,0,1,1,0,0
-1,1,0,1,0,1,0,0,1,1,0,1
-0,1,0,1,0,1,0,0,1,1,0,1
-1,0,0,1,0,1,0,0,1,1,0,0
-0,0,0,1,0,1,0,0,1,1,0,1
-1,1,1,0,0,1,0,0,1,1,0,0
-0,1,1,0,0,1,0,0,1,1,0,0
-1,0,1,0,0,1,0,0,1,1,0,1
-0,0,1,0,0,1,0,0,1,1,0,0
-1,1,0,0,0,1,0,0,1,1,0,1
-0,1,0,0,0,1,0,0,1,1,0,1
-1,0,0,0,0,1,0,0,1,1,0,0
-0,0,0,0,0,1,0,0,1,1,0,0
-1,1,1,1,1,0,0,0,1,1,0,0
-0,1,1,1,1,0,0,0,1,1,0,0
-1,0,1,1,1,0,0,0,1,1,0,1
-0,0,1,1,1,0,0,0,1,1,0,1
-1,1,0,1,1,0,0,0,1,1,0,1
-0,1,0,1,1,0,0,0,1,1,0,0
-1,0,0,1,1,0,0,0,1,1,0,0
-0,0,0,1,1,0,0,0,1,1,0,1
-1,1,1,0,1,0,0,0,1,1,0,0
-0,1,1,0,1,0,0,0,1,1,0,0
-1,0,1,0,1,0,0,0,1,1,0,1
-0,0,1,0,1,0,0,0,1,1,0,1
-1,1,0,0,1,0,0,0,1,1,0,1
-0,1,0,0,1,0,0,0,1,1,0,0
-1,0,0,0,1,0,0,0,1,1,0,0
-0,0,0,0,1,0,0,0,1,1,0,0
-1,1,1,1,0,0,0,0,1,1,0,0
-0,1,1,1,0,0,0,0,1,1,0,0
-1,0,1,1,0,0,0,0,1,1,0,1
-0,0,1,1,0,0,0,0,1,1,0,0
-1,1,0,1,0,0,0,0,1,1,0,1
-0,1,0,1,0,0,0,0,1,1,0,0
-1,0,0,1,0,0,0,0,1,1,0,0
-0,0,0,1,0,0,0,0,1,1,0,1
-1,1,1,0,0,0,0,0,1,1,0,0
-0,1,1,0,0,0,0,0,1,1,0,0
-1,0,1,0,0,0,0,0,1,1,0,1
-0,0,1,0,0,0,0,0,1,1,0,0
-1,1,0,0,0,0,0,0,1,1,0,1
-0,1,0,0,0,0,0,0,1,1,0,0
-1,0,0,0,0,0,0,0,1,1,0,0
-0,0,0,0,0,0,0,0,1,1,0,0
-1,1,1,1,1,1,1,1,0,1,0,0
-0,1,1,1,1,1,1,1,0,1,0,1
-1,0,1,1,1,1,1,1,0,1,0,0
-0,0,1,1,1,1,1,1,0,1,0,1
-1,1,0,1,1,1,1,1,0,1,0,1
-0,1,0,1,1,1,1,1,0,1,0,1
-1,0,0,1,1,1,1,1,0,1,0,1
-0,0,0,1,1,1,1,1,0,1,0,1
-1,1,1,0,1,1,1,1,0,1,0,0
-0,1,1,0,1,1,1,1,0,1,0,1
-1,0,1,0,1,1,1,1,0,1,0,0
-0,0,1,0,1,1,1,1,0,1,0,1
-1,1,0,0,1,1,1,1,0,1,0,1
-0,1,0,0,1,1,1,1,0,1,0,1
-1,0,0,0,1,1,1,1,0,1,0,1
-0,0,0,0,1,1,1,1,0,1,0,0
-1,1,1,1,0,1,1,1,0,1,0,0
-0,1,1,1,0,1,1,1,0,1,0,1
-1,0,1,1,0,1,1,1,0,1,0,0
-0,0,1,1,0,1,1,1,0,1,0,0
-1,1,0,1,0,1,1,1,0,1,0,1
-0,1,0,1,0,1,1,1,0,1,0,1
-1,0,0,1,0,1,1,1,0,1,0,1
-0,0,0,1,0,1,1,1,0,1,0,1
-1,1,1,0,0,1,1,1,0,1,0,0
-0,1,1,0,0,1,1,1,0,1,0,1
-1,0,1,0,0,1,1,1,0,1,0,0
-0,0,1,0,0,1,1,1,0,1,0,0
-1,1,0,0,0,1,1,1,0,1,0,1
-0,1,0,0,0,1,1,1,0,1,0,1
-1,0,0,0,0,1,1,1,0,1,0,1
-0,0,0,0,0,1,1,1,0,1,0,0
-1,1,1,1,1,0,1,1,0,1,0,0
-0,1,1,1,1,0,1,1,0,1,0,1
-1,0,1,1,1,0,1,1,0,1,0,0
-0,0,1,1,1,0,1,1,0,1,0,1
-1,1,0,1,1,0,1,1,0,1,0,1
-0,1,0,1,1,0,1,1,0,1,0,0
-1,0,0,1,1,0,1,1,0,1,0,1
-0,0,0,1,1,0,1,1,0,1,0,1
-1,1,1,0,1,0,1,1,0,1,0,0
-0,1,1,0,1,0,1,1,0,1,0,1
-1,0,1,0,1,0,1,1,0,1,0,0
-0,0,1,0,1,0,1,1,0,1,0,1
-1,1,0,0,1,0,1,1,0,1,0,1
-0,1,0,0,1,0,1,1,0,1,0,0
-1,0,0,0,1,0,1,1,0,1,0,1
-0,0,0,0,1,0,1,1,0,1,0,0
-1,1,1,1,0,0,1,1,0,1,0,0
-0,1,1,1,0,0,1,1,0,1,0,1
-1,0,1,1,0,0,1,1,0,1,0,0
-0,0,1,1,0,0,1,1,0,1,0,0
-1,1,0,1,0,0,1,1,0,1,0,1
-0,1,0,1,0,0,1,1,0,1,0,0
-1,0,0,1,0,0,1,1,0,1,0,1
-0,0,0,1,0,0,1,1,0,1,0,1
-1,1,1,0,0,0,1,1,0,1,0,0
-0,1,1,0,0,0,1,1,0,1,0,1
-1,0,1,0,0,0,1,1,0,1,0,0
-0,0,1,0,0,0,1,1,0,1,0,0
-1,1,0,0,0,0,1,1,0,1,0,1
-0,1,0,0,0,0,1,1,0,1,0,0
-1,0,0,0,0,0,1,1,0,1,0,1
-0,0,0,0,0,0,1,1,0,1,0,0
-1,1,1,1,1,1,0,1,0,1,0,0
-0,1,1,1,1,1,0,1,0,1,0,0
-1,0,1,1,1,1,0,1,0,1,0,0
-0,0,1,1,1,1,0,1,0,1,0,1
-1,1,0,1,1,1,0,1,0,1,0,1
-0,1,0,1,1,1,0,1,0,1,0,1
-1,0,0,1,1,1,0,1,0,1,0,1
-0,0,0,1,1,1,0,1,0,1,0,1
-1,1,1,0,1,1,0,1,0,1,0,0
-0,1,1,0,1,1,0,1,0,1,0,0
-1,0,1,0,1,1,0,1,0,1,0,0
-0,0,1,0,1,1,0,1,0,1,0,1
-1,1,0,0,1,1,0,1,0,1,0,1
-0,1,0,0,1,1,0,1,0,1,0,1
-1,0,0,0,1,1,0,1,0,1,0,1
-0,0,0,0,1,1,0,1,0,1,0,0
-1,1,1,1,0,1,0,1,0,1,0,0
-0,1,1,1,0,1,0,1,0,1,0,0
-1,0,1,1,0,1,0,1,0,1,0,0
-0,0,1,1,0,1,0,1,0,1,0,0
-1,1,0,1,0,1,0,1,0,1,0,1
-0,1,0,1,0,1,0,1,0,1,0,1
-1,0,0,1,0,1,0,1,0,1,0,1
-0,0,0,1,0,1,0,1,0,1,0,1
-1,1,1,0,0,1,0,1,0,1,0,0
-0,1,1,0,0,1,0,1,0,1,0,0
-1,0,1,0,0,1,0,1,0,1,0,0
-0,0,1,0,0,1,0,1,0,1,0,0
-1,1,0,0,0,1,0,1,0,1,0,1
-0,1,0,0,0,1,0,1,0,1,0,1
-1,0,0,0,0,1,0,1,0,1,0,1
-0,0,0,0,0,1,0,1,0,1,0,0
-1,1,1,1,1,0,0,1,0,1,0,0
-0,1,1,1,1,0,0,1,0,1,0,0
-1,0,1,1,1,0,0,1,0,1,0,0
-0,0,1,1,1,0,0,1,0,1,0,1
-1,1,0,1,1,0,0,1,0,1,0,1
-0,1,0,1,1,0,0,1,0,1,0,0
-1,0,0,1,1,0,0,1,0,1,0,1
-0,0,0,1,1,0,0,1,0,1,0,1
-1,1,1,0,1,0,0,1,0,1,0,0
-0,1,1,0,1,0,0,1,0,1,0,0
-1,0,1,0,1,0,0,1,0,1,0,0
-0,0,1,0,1,0,0,1,0,1,0,1
-1,1,0,0,1,0,0,1,0,1,0,1
-0,1,0,0,1,0,0,1,0,1,0,0
-1,0,0,0,1,0,0,1,0,1,0,1
-0,0,0,0,1,0,0,1,0,1,0,0
-1,1,1,1,0,0,0,1,0,1,0,0
-0,1,1,1,0,0,0,1,0,1,0,0
-1,0,1,1,0,0,0,1,0,1,0,0
-0,0,1,1,0,0,0,1,0,1,0,0
-1,1,0,1,0,0,0,1,0,1,0,1
-0,1,0,1,0,0,0,1,0,1,0,0
-1,0,0,1,0,0,0,1,0,1,0,1
-0,0,0,1,0,0,0,1,0,1,0,1
-1,1,1,0,0,0,0,1,0,1,0,0
-0,1,1,0,0,0,0,1,0,1,0,0
-1,0,1,0,0,0,0,1,0,1,0,0
-0,0,1,0,0,0,0,1,0,1,0,0
-1,1,0,0,0,0,0,1,0,1,0,1
-0,1,0,0,0,0,0,1,0,1,0,0
-1,0,0,0,0,0,0,1,0,1,0,1
-0,0,0,0,0,0,0,1,0,1,0,0
-1,1,1,1,1,1,1,0,0,1,0,0
-0,1,1,1,1,1,1,0,0,1,0,1
-1,0,1,1,1,1,1,0,0,1,0,0
-0,0,1,1,1,1,1,0,0,1,0,1
-1,1,0,1,1,1,1,0,0,1,0,1
-0,1,0,1,1,1,1,0,0,1,0,1
-1,0,0,1,1,1,1,0,0,1,0,0
-0,0,0,1,1,1,1,0,0,1,0,1
-1,1,1,0,1,1,1,0,0,1,0,0
-0,1,1,0,1,1,1,0,0,1,0,1
-1,0,1,0,1,1,1,0,0,1,0,0
-0,0,1,0,1,1,1,0,0,1,0,1
-1,1,0,0,1,1,1,0,0,1,0,1
-0,1,0,0,1,1,1,0,0,1,0,1
-1,0,0,0,1,1,1,0,0,1,0,0
-0,0,0,0,1,1,1,0,0,1,0,0
-1,1,1,1,0,1,1,0,0,1,0,0
-0,1,1,1,0,1,1,0,0,1,0,1
-1,0,1,1,0,1,1,0,0,1,0,0
-0,0,1,1,0,1,1,0,0,1,0,0
-1,1,0,1,0,1,1,0,0,1,0,1
-0,1,0,1,0,1,1,0,0,1,0,1
-1,0,0,1,0,1,1,0,0,1,0,0
-0,0,0,1,0,1,1,0,0,1,0,1
-1,1,1,0,0,1,1,0,0,1,0,0
-0,1,1,0,0,1,1,0,0,1,0,1
-1,0,1,0,0,1,1,0,0,1,0,0
-0,0,1,0,0,1,1,0,0,1,0,0
-1,1,0,0,0,1,1,0,0,1,0,1
-0,1,0,0,0,1,1,0,0,1,0,1
-1,0,0,0,0,1,1,0,0,1,0,0
-0,0,0,0,0,1,1,0,0,1,0,0
-1,1,1,1,1,0,1,0,0,1,0,0
-0,1,1,1,1,0,1,0,0,1,0,1
-1,0,1,1,1,0,1,0,0,1,0,0
-0,0,1,1,1,0,1,0,0,1,0,1
-1,1,0,1,1,0,1,0,0,1,0,1
-0,1,0,1,1,0,1,0,0,1,0,0
-1,0,0,1,1,0,1,0,0,1,0,0
-0,0,0,1,1,0,1,0,0,1,0,1
-1,1,1,0,1,0,1,0,0,1,0,0
-0,1,1,0,1,0,1,0,0,1,0,1
-1,0,1,0,1,0,1,0,0,1,0,0
-0,0,1,0,1,0,1,0,0,1,0,1
-1,1,0,0,1,0,1,0,0,1,0,1
-0,1,0,0,1,0,1,0,0,1,0,0
-1,0,0,0,1,0,1,0,0,1,0,0
-0,0,0,0,1,0,1,0,0,1,0,0
-1,1,1,1,0,0,1,0,0,1,0,0
-0,1,1,1,0,0,1,0,0,1,0,1
-1,0,1,1,0,0,1,0,0,1,0,0
-0,0,1,1,0,0,1,0,0,1,0,0
-1,1,0,1,0,0,1,0,0,1,0,1
-0,1,0,1,0,0,1,0,0,1,0,0
-1,0,0,1,0,0,1,0,0,1,0,0
-0,0,0,1,0,0,1,0,0,1,0,1
-1,1,1,0,0,0,1,0,0,1,0,0
-0,1,1,0,0,0,1,0,0,1,0,1
-1,0,1,0,0,0,1,0,0,1,0,0
-0,0,1,0,0,0,1,0,0,1,0,0
-1,1,0,0,0,0,1,0,0,1,0,1
-0,1,0,0,0,0,1,0,0,1,0,0
-1,0,0,0,0,0,1,0,0,1,0,0
-0,0,0,0,0,0,1,0,0,1,0,0
-1,1,1,1,1,1,0,0,0,1,0,0
-0,1,1,1,1,1,0,0,0,1,0,0
-1,0,1,1,1,1,0,0,0,1,0,0
-0,0,1,1,1,1,0,0,0,1,0,1
-1,1,0,1,1,1,0,0,0,1,0,1
-0,1,0,1,1,1,0,0,0,1,0,1
-1,0,0,1,1,1,0,0,0,1,0,0
-0,0,0,1,1,1,0,0,0,1,0,1
-1,1,1,0,1,1,0,0,0,1,0,0
-0,1,1,0,1,1,0,0,0,1,0,0
-1,0,1,0,1,1,0,0,0,1,0,0
-0,0,1,0,1,1,0,0,0,1,0,1
-1,1,0,0,1,1,0,0,0,1,0,1
-0,1,0,0,1,1,0,0,0,1,0,1
-1,0,0,0,1,1,0,0,0,1,0,0
-0,0,0,0,1,1,0,0,0,1,0,0
-1,1,1,1,0,1,0,0,0,1,0,0
-0,1,1,1,0,1,0,0,0,1,0,0
-1,0,1,1,0,1,0,0,0,1,0,0
-0,0,1,1,0,1,0,0,0,1,0,0
-1,1,0,1,0,1,0,0,0,1,0,1
-0,1,0,1,0,1,0,0,0,1,0,1
-1,0,0,1,0,1,0,0,0,1,0,0
-0,0,0,1,0,1,0,0,0,1,0,1
-1,1,1,0,0,1,0,0,0,1,0,0
-0,1,1,0,0,1,0,0,0,1,0,0
-1,0,1,0,0,1,0,0,0,1,0,0
-0,0,1,0,0,1,0,0,0,1,0,0
-1,1,0,0,0,1,0,0,0,1,0,1
-0,1,0,0,0,1,0,0,0,1,0,1
-1,0,0,0,0,1,0,0,0,1,0,0
-0,0,0,0,0,1,0,0,0,1,0,0
-1,1,1,1,1,0,0,0,0,1,0,0
-0,1,1,1,1,0,0,0,0,1,0,0
-1,0,1,1,1,0,0,0,0,1,0,0
-0,0,1,1,1,0,0,0,0,1,0,1
-1,1,0,1,1,0,0,0,0,1,0,1
-0,1,0,1,1,0,0,0,0,1,0,0
-1,0,0,1,1,0,0,0,0,1,0,0
-0,0,0,1,1,0,0,0,0,1,0,1
-1,1,1,0,1,0,0,0,0,1,0,0
-0,1,1,0,1,0,0,0,0,1,0,0
-1,0,1,0,1,0,0,0,0,1,0,0
-0,0,1,0,1,0,0,0,0,1,0,1
-1,1,0,0,1,0,0,0,0,1,0,1
-0,1,0,0,1,0,0,0,0,1,0,0
-1,0,0,0,1,0,0,0,0,1,0,0
-0,0,0,0,1,0,0,0,0,1,0,0
-1,1,1,1,0,0,0,0,0,1,0,0
-0,1,1,1,0,0,0,0,0,1,0,0
-1,0,1,1,0,0,0,0,0,1,0,0
-0,0,1,1,0,0,0,0,0,1,0,0
-1,1,0,1,0,0,0,0,0,1,0,1
-0,1,0,1,0,0,0,0,0,1,0,0
-1,0,0,1,0,0,0,0,0,1,0,0
-0,0,0,1,0,0,0,0,0,1,0,1
-1,1,1,0,0,0,0,0,0,1,0,0
-0,1,1,0,0,0,0,0,0,1,0,0
-1,0,1,0,0,0,0,0,0,1,0,0
-0,0,1,0,0,0,0,0,0,1,0,0
-1,1,0,0,0,0,0,0,0,1,0,1
-0,1,0,0,0,0,0,0,0,1,0,0
-1,0,0,0,0,0,0,0,0,1,0,0
-0,0,0,0,0,0,0,0,0,1,0,0
-1,1,1,1,1,1,1,1,1,0,0,0
-0,1,1,1,1,1,1,1,1,0,0,1
-1,0,1,1,1,1,1,1,1,0,0,1
-0,0,1,1,1,1,1,1,1,0,0,1
-1,1,0,1,1,1,1,1,1,0,0,0
-0,1,0,1,1,1,1,1,1,0,0,1
-1,0,0,1,1,1,1,1,1,0,0,1
-0,0,0,1,1,1,1,1,1,0,0,1
-1,1,1,0,1,1,1,1,1,0,0,0
-0,1,1,0,1,1,1,1,1,0,0,1
-1,0,1,0,1,1,1,1,1,0,0,1
-0,0,1,0,1,1,1,1,1,0,0,1
-1,1,0,0,1,1,1,1,1,0,0,0
-0,1,0,0,1,1,1,1,1,0,0,1
-1,0,0,0,1,1,1,1,1,0,0,1
-0,0,0,0,1,1,1,1,1,0,0,0
-1,1,1,1,0,1,1,1,1,0,0,0
-0,1,1,1,0,1,1,1,1,0,0,1
-1,0,1,1,0,1,1,1,1,0,0,1
-0,0,1,1,0,1,1,1,1,0,0,0
-1,1,0,1,0,1,1,1,1,0,0,0
-0,1,0,1,0,1,1,1,1,0,0,1
-1,0,0,1,0,1,1,1,1,0,0,1
-0,0,0,1,0,1,1,1,1,0,0,1
-1,1,1,0,0,1,1,1,1,0,0,0
-0,1,1,0,0,1,1,1,1,0,0,1
-1,0,1,0,0,1,1,1,1,0,0,1
-0,0,1,0,0,1,1,1,1,0,0,0
-1,1,0,0,0,1,1,1,1,0,0,0
-0,1,0,0,0,1,1,1,1,0,0,1
-1,0,0,0,0,1,1,1,1,0,0,1
-0,0,0,0,0,1,1,1,1,0,0,0
-1,1,1,1,1,0,1,1,1,0,0,0
-0,1,1,1,1,0,1,1,1,0,0,1
-1,0,1,1,1,0,1,1,1,0,0,1
-0,0,1,1,1,0,1,1,1,0,0,1
-1,1,0,1,1,0,1,1,1,0,0,0
-0,1,0,1,1,0,1,1,1,0,0,0
-1,0,0,1,1,0,1,1,1,0,0,1
-0,0,0,1,1,0,1,1,1,0,0,1
-1,1,1,0,1,0,1,1,1,0,0,0
-0,1,1,0,1,0,1,1,1,0,0,1
-1,0,1,0,1,0,1,1,1,0,0,1
-0,0,1,0,1,0,1,1,1,0,0,1
-1,1,0,0,1,0,1,1,1,0,0,0
-0,1,0,0,1,0,1,1,1,0,0,0
-1,0,0,0,1,0,1,1,1,0,0,1
-0,0,0,0,1,0,1,1,1,0,0,0
-1,1,1,1,0,0,1,1,1,0,0,0
-0,1,1,1,0,0,1,1,1,0,0,1
-1,0,1,1,0,0,1,1,1,0,0,1
-0,0,1,1,0,0,1,1,1,0,0,0
-1,1,0,1,0,0,1,1,1,0,0,0
-0,1,0,1,0,0,1,1,1,0,0,0
-1,0,0,1,0,0,1,1,1,0,0,1
-0,0,0,1,0,0,1,1,1,0,0,1
-1,1,1,0,0,0,1,1,1,0,0,0
-0,1,1,0,0,0,1,1,1,0,0,1
-1,0,1,0,0,0,1,1,1,0,0,1
-0,0,1,0,0,0,1,1,1,0,0,0
-1,1,0,0,0,0,1,1,1,0,0,0
-0,1,0,0,0,0,1,1,1,0,0,0
-1,0,0,0,0,0,1,1,1,0,0,1
-0,0,0,0,0,0,1,1,1,0,0,0
-1,1,1,1,1,1,0,1,1,0,0,0
-0,1,1,1,1,1,0,1,1,0,0,0
-1,0,1,1,1,1,0,1,1,0,0,1
-0,0,1,1,1,1,0,1,1,0,0,1
-1,1,0,1,1,1,0,1,1,0,0,0
-0,1,0,1,1,1,0,1,1,0,0,1
-1,0,0,1,1,1,0,1,1,0,0,1
-0,0,0,1,1,1,0,1,1,0,0,1
-1,1,1,0,1,1,0,1,1,0,0,0
-0,1,1,0,1,1,0,1,1,0,0,0
-1,0,1,0,1,1,0,1,1,0,0,1
-0,0,1,0,1,1,0,1,1,0,0,1
-1,1,0,0,1,1,0,1,1,0,0,0
-0,1,0,0,1,1,0,1,1,0,0,1
-1,0,0,0,1,1,0,1,1,0,0,1
-0,0,0,0,1,1,0,1,1,0,0,0
-1,1,1,1,0,1,0,1,1,0,0,0
-0,1,1,1,0,1,0,1,1,0,0,0
-1,0,1,1,0,1,0,1,1,0,0,1
-0,0,1,1,0,1,0,1,1,0,0,0
-1,1,0,1,0,1,0,1,1,0,0,0
-0,1,0,1,0,1,0,1,1,0,0,1
-1,0,0,1,0,1,0,1,1,0,0,1
-0,0,0,1,0,1,0,1,1,0,0,1
-1,1,1,0,0,1,0,1,1,0,0,0
-0,1,1,0,0,1,0,1,1,0,0,0
-1,0,1,0,0,1,0,1,1,0,0,1
-0,0,1,0,0,1,0,1,1,0,0,0
-1,1,0,0,0,1,0,1,1,0,0,0
-0,1,0,0,0,1,0,1,1,0,0,1
-1,0,0,0,0,1,0,1,1,0,0,1
-0,0,0,0,0,1,0,1,1,0,0,0
-1,1,1,1,1,0,0,1,1,0,0,0
-0,1,1,1,1,0,0,1,1,0,0,0
-1,0,1,1,1,0,0,1,1,0,0,1
-0,0,1,1,1,0,0,1,1,0,0,1
-1,1,0,1,1,0,0,1,1,0,0,0
-0,1,0,1,1,0,0,1,1,0,0,0
-1,0,0,1,1,0,0,1,1,0,0,1
-0,0,0,1,1,0,0,1,1,0,0,1
-1,1,1,0,1,0,0,1,1,0,0,0
-0,1,1,0,1,0,0,1,1,0,0,0
-1,0,1,0,1,0,0,1,1,0,0,1
-0,0,1,0,1,0,0,1,1,0,0,1
-1,1,0,0,1,0,0,1,1,0,0,0
-0,1,0,0,1,0,0,1,1,0,0,0
-1,0,0,0,1,0,0,1,1,0,0,1
-0,0,0,0,1,0,0,1,1,0,0,0
-1,1,1,1,0,0,0,1,1,0,0,0
-0,1,1,1,0,0,0,1,1,0,0,0
-1,0,1,1,0,0,0,1,1,0,0,1
-0,0,1,1,0,0,0,1,1,0,0,0
-1,1,0,1,0,0,0,1,1,0,0,0
-0,1,0,1,0,0,0,1,1,0,0,0
-1,0,0,1,0,0,0,1,1,0,0,1
-0,0,0,1,0,0,0,1,1,0,0,1
-1,1,1,0,0,0,0,1,1,0,0,0
-0,1,1,0,0,0,0,1,1,0,0,0
-1,0,1,0,0,0,0,1,1,0,0,1
-0,0,1,0,0,0,0,1,1,0,0,0
-1,1,0,0,0,0,0,1,1,0,0,0
-0,1,0,0,0,0,0,1,1,0,0,0
-1,0,0,0,0,0,0,1,1,0,0,1
-0,0,0,0,0,0,0,1,1,0,0,0
-1,1,1,1,1,1,1,0,1,0,0,0
-0,1,1,1,1,1,1,0,1,0,0,1
-1,0,1,1,1,1,1,0,1,0,0,1
-0,0,1,1,1,1,1,0,1,0,0,1
-1,1,0,1,1,1,1,0,1,0,0,0
-0,1,0,1,1,1,1,0,1,0,0,1
-1,0,0,1,1,1,1,0,1,0,0,0
-0,0,0,1,1,1,1,0,1,0,0,1
-1,1,1,0,1,1,1,0,1,0,0,0
-0,1,1,0,1,1,1,0,1,0,0,1
-1,0,1,0,1,1,1,0,1,0,0,1
-0,0,1,0,1,1,1,0,1,0,0,1
-1,1,0,0,1,1,1,0,1,0,0,0
-0,1,0,0,1,1,1,0,1,0,0,1
-1,0,0,0,1,1,1,0,1,0,0,0
-0,0,0,0,1,1,1,0,1,0,0,0
-1,1,1,1,0,1,1,0,1,0,0,0
-0,1,1,1,0,1,1,0,1,0,0,1
-1,0,1,1,0,1,1,0,1,0,0,1
-0,0,1,1,0,1,1,0,1,0,0,0
-1,1,0,1,0,1,1,0,1,0,0,0
-0,1,0,1,0,1,1,0,1,0,0,1
-1,0,0,1,0,1,1,0,1,0,0,0
-0,0,0,1,0,1,1,0,1,0,0,1
-1,1,1,0,0,1,1,0,1,0,0,0
-0,1,1,0,0,1,1,0,1,0,0,1
-1,0,1,0,0,1,1,0,1,0,0,1
-0,0,1,0,0,1,1,0,1,0,0,0
-1,1,0,0,0,1,1,0,1,0,0,0
-0,1,0,0,0,1,1,0,1,0,0,1
-1,0,0,0,0,1,1,0,1,0,0,0
-0,0,0,0,0,1,1,0,1,0,0,0
-1,1,1,1,1,0,1,0,1,0,0,0
-0,1,1,1,1,0,1,0,1,0,0,1
-1,0,1,1,1,0,1,0,1,0,0,1
-0,0,1,1,1,0,1,0,1,0,0,1
-1,1,0,1,1,0,1,0,1,0,0,0
-0,1,0,1,1,0,1,0,1,0,0,0
-1,0,0,1,1,0,1,0,1,0,0,0
-0,0,0,1,1,0,1,0,1,0,0,1
-1,1,1,0,1,0,1,0,1,0,0,0
-0,1,1,0,1,0,1,0,1,0,0,1
-1,0,1,0,1,0,1,0,1,0,0,1
-0,0,1,0,1,0,1,0,1,0,0,1
-1,1,0,0,1,0,1,0,1,0,0,0
-0,1,0,0,1,0,1,0,1,0,0,0
-1,0,0,0,1,0,1,0,1,0,0,0
-0,0,0,0,1,0,1,0,1,0,0,0
-1,1,1,1,0,0,1,0,1,0,0,0
-0,1,1,1,0,0,1,0,1,0,0,1
-1,0,1,1,0,0,1,0,1,0,0,1
-0,0,1,1,0,0,1,0,1,0,0,0
-1,1,0,1,0,0,1,0,1,0,0,0
-0,1,0,1,0,0,1,0,1,0,0,0
-1,0,0,1,0,0,1,0,1,0,0,0
-0,0,0,1,0,0,1,0,1,0,0,1
-1,1,1,0,0,0,1,0,1,0,0,0
-0,1,1,0,0,0,1,0,1,0,0,1
-1,0,1,0,0,0,1,0,1,0,0,1
-0,0,1,0,0,0,1,0,1,0,0,0
-1,1,0,0,0,0,1,0,1,0,0,0
-0,1,0,0,0,0,1,0,1,0,0,0
-1,0,0,0,0,0,1,0,1,0,0,0
-0,0,0,0,0,0,1,0,1,0,0,0
-1,1,1,1,1,1,0,0,1,0,0,0
-0,1,1,1,1,1,0,0,1,0,0,0
-1,0,1,1,1,1,0,0,1,0,0,1
-0,0,1,1,1,1,0,0,1,0,0,1
-1,1,0,1,1,1,0,0,1,0,0,0
-0,1,0,1,1,1,0,0,1,0,0,1
-1,0,0,1,1,1,0,0,1,0,0,0
-0,0,0,1,1,1,0,0,1,0,0,1
-1,1,1,0,1,1,0,0,1,0,0,0
-0,1,1,0,1,1,0,0,1,0,0,0
-1,0,1,0,1,1,0,0,1,0,0,1
-0,0,1,0,1,1,0,0,1,0,0,1
-1,1,0,0,1,1,0,0,1,0,0,0
-0,1,0,0,1,1,0,0,1,0,0,1
-1,0,0,0,1,1,0,0,1,0,0,0
-0,0,0,0,1,1,0,0,1,0,0,0
-1,1,1,1,0,1,0,0,1,0,0,0
-0,1,1,1,0,1,0,0,1,0,0,0
-1,0,1,1,0,1,0,0,1,0,0,1
-0,0,1,1,0,1,0,0,1,0,0,0
-1,1,0,1,0,1,0,0,1,0,0,0
-0,1,0,1,0,1,0,0,1,0,0,1
-1,0,0,1,0,1,0,0,1,0,0,0
-0,0,0,1,0,1,0,0,1,0,0,1
-1,1,1,0,0,1,0,0,1,0,0,0
-0,1,1,0,0,1,0,0,1,0,0,0
-1,0,1,0,0,1,0,0,1,0,0,1
-0,0,1,0,0,1,0,0,1,0,0,0
-1,1,0,0,0,1,0,0,1,0,0,0
-0,1,0,0,0,1,0,0,1,0,0,1
-1,0,0,0,0,1,0,0,1,0,0,0
-0,0,0,0,0,1,0,0,1,0,0,0
-1,1,1,1,1,0,0,0,1,0,0,0
-0,1,1,1,1,0,0,0,1,0,0,0
-1,0,1,1,1,0,0,0,1,0,0,1
-0,0,1,1,1,0,0,0,1,0,0,1
-1,1,0,1,1,0,0,0,1,0,0,0
-0,1,0,1,1,0,0,0,1,0,0,0
-1,0,0,1,1,0,0,0,1,0,0,0
-0,0,0,1,1,0,0,0,1,0,0,1
-1,1,1,0,1,0,0,0,1,0,0,0
-0,1,1,0,1,0,0,0,1,0,0,0
-1,0,1,0,1,0,0,0,1,0,0,1
-0,0,1,0,1,0,0,0,1,0,0,1
-1,1,0,0,1,0,0,0,1,0,0,0
-0,1,0,0,1,0,0,0,1,0,0,0
-1,0,0,0,1,0,0,0,1,0,0,0
-0,0,0,0,1,0,0,0,1,0,0,0
-1,1,1,1,0,0,0,0,1,0,0,0
-0,1,1,1,0,0,0,0,1,0,0,0
-1,0,1,1,0,0,0,0,1,0,0,1
-0,0,1,1,0,0,0,0,1,0,0,0
-1,1,0,1,0,0,0,0,1,0,0,0
-0,1,0,1,0,0,0,0,1,0,0,0
-1,0,0,1,0,0,0,0,1,0,0,0
-0,0,0,1,0,0,0,0,1,0,0,1
-1,1,1,0,0,0,0,0,1,0,0,0
-0,1,1,0,0,0,0,0,1,0,0,0
-1,0,1,0,0,0,0,0,1,0,0,1
-0,0,1,0,0,0,0,0,1,0,0,0
-1,1,0,0,0,0,0,0,1,0,0,0
-0,1,0,0,0,0,0,0,1,0,0,0
-1,0,0,0,0,0,0,0,1,0,0,0
-0,0,0,0,0,0,0,0,1,0,0,0
-1,1,1,1,1,1,1,1,0,0,0,0
-0,1,1,1,1,1,1,1,0,0,0,1
-1,0,1,1,1,1,1,1,0,0,0,0
-0,0,1,1,1,1,1,1,0,0,0,1
-1,1,0,1,1,1,1,1,0,0,0,0
-0,1,0,1,1,1,1,1,0,0,0,1
-1,0,0,1,1,1,1,1,0,0,0,1
-0,0,0,1,1,1,1,1,0,0,0,1
-1,1,1,0,1,1,1,1,0,0,0,0
-0,1,1,0,1,1,1,1,0,0,0,1
-1,0,1,0,1,1,1,1,0,0,0,0
-0,0,1,0,1,1,1,1,0,0,0,1
-1,1,0,0,1,1,1,1,0,0,0,0
-0,1,0,0,1,1,1,1,0,0,0,1
-1,0,0,0,1,1,1,1,0,0,0,1
-0,0,0,0,1,1,1,1,0,0,0,0
-1,1,1,1,0,1,1,1,0,0,0,0
-0,1,1,1,0,1,1,1,0,0,0,1
-1,0,1,1,0,1,1,1,0,0,0,0
-0,0,1,1,0,1,1,1,0,0,0,0
-1,1,0,1,0,1,1,1,0,0,0,0
-0,1,0,1,0,1,1,1,0,0,0,1
-1,0,0,1,0,1,1,1,0,0,0,1
-0,0,0,1,0,1,1,1,0,0,0,1
-1,1,1,0,0,1,1,1,0,0,0,0
-0,1,1,0,0,1,1,1,0,0,0,1
-1,0,1,0,0,1,1,1,0,0,0,0
-0,0,1,0,0,1,1,1,0,0,0,0
-1,1,0,0,0,1,1,1,0,0,0,0
-0,1,0,0,0,1,1,1,0,0,0,1
-1,0,0,0,0,1,1,1,0,0,0,1
-0,0,0,0,0,1,1,1,0,0,0,0
-1,1,1,1,1,0,1,1,0,0,0,0
-0,1,1,1,1,0,1,1,0,0,0,1
-1,0,1,1,1,0,1,1,0,0,0,0
-0,0,1,1,1,0,1,1,0,0,0,1
-1,1,0,1,1,0,1,1,0,0,0,0
-0,1,0,1,1,0,1,1,0,0,0,0
-1,0,0,1,1,0,1,1,0,0,0,1
-0,0,0,1,1,0,1,1,0,0,0,1
-1,1,1,0,1,0,1,1,0,0,0,0
-0,1,1,0,1,0,1,1,0,0,0,1
-1,0,1,0,1,0,1,1,0,0,0,0
-0,0,1,0,1,0,1,1,0,0,0,1
-1,1,0,0,1,0,1,1,0,0,0,0
-0,1,0,0,1,0,1,1,0,0,0,0
-1,0,0,0,1,0,1,1,0,0,0,1
-0,0,0,0,1,0,1,1,0,0,0,0
-1,1,1,1,0,0,1,1,0,0,0,0
-0,1,1,1,0,0,1,1,0,0,0,1
-1,0,1,1,0,0,1,1,0,0,0,0
-0,0,1,1,0,0,1,1,0,0,0,0
-1,1,0,1,0,0,1,1,0,0,0,0
-0,1,0,1,0,0,1,1,0,0,0,0
-1,0,0,1,0,0,1,1,0,0,0,1
-0,0,0,1,0,0,1,1,0,0,0,1
-1,1,1,0,0,0,1,1,0,0,0,0
-0,1,1,0,0,0,1,1,0,0,0,1
-1,0,1,0,0,0,1,1,0,0,0,0
-0,0,1,0,0,0,1,1,0,0,0,0
-1,1,0,0,0,0,1,1,0,0,0,0
-0,1,0,0,0,0,1,1,0,0,0,0
-1,0,0,0,0,0,1,1,0,0,0,1
-0,0,0,0,0,0,1,1,0,0,0,0
-1,1,1,1,1,1,0,1,0,0,0,0
-0,1,1,1,1,1,0,1,0,0,0,0
-1,0,1,1,1,1,0,1,0,0,0,0
-0,0,1,1,1,1,0,1,0,0,0,1
-1,1,0,1,1,1,0,1,0,0,0,0
-0,1,0,1,1,1,0,1,0,0,0,1
-1,0,0,1,1,1,0,1,0,0,0,1
-0,0,0,1,1,1,0,1,0,0,0,1
-1,1,1,0,1,1,0,1,0,0,0,0
-0,1,1,0,1,1,0,1,0,0,0,0
-1,0,1,0,1,1,0,1,0,0,0,0
-0,0,1,0,1,1,0,1,0,0,0,1
-1,1,0,0,1,1,0,1,0,0,0,0
-0,1,0,0,1,1,0,1,0,0,0,1
-1,0,0,0,1,1,0,1,0,0,0,1
-0,0,0,0,1,1,0,1,0,0,0,0
-1,1,1,1,0,1,0,1,0,0,0,0
-0,1,1,1,0,1,0,1,0,0,0,0
-1,0,1,1,0,1,0,1,0,0,0,0
-0,0,1,1,0,1,0,1,0,0,0,0
-1,1,0,1,0,1,0,1,0,0,0,0
-0,1,0,1,0,1,0,1,0,0,0,1
-1,0,0,1,0,1,0,1,0,0,0,1
-0,0,0,1,0,1,0,1,0,0,0,1
-1,1,1,0,0,1,0,1,0,0,0,0
-0,1,1,0,0,1,0,1,0,0,0,0
-1,0,1,0,0,1,0,1,0,0,0,0
-0,0,1,0,0,1,0,1,0,0,0,0
-1,1,0,0,0,1,0,1,0,0,0,0
-0,1,0,0,0,1,0,1,0,0,0,1
-1,0,0,0,0,1,0,1,0,0,0,1
-0,0,0,0,0,1,0,1,0,0,0,0
-1,1,1,1,1,0,0,1,0,0,0,0
-0,1,1,1,1,0,0,1,0,0,0,0
-1,0,1,1,1,0,0,1,0,0,0,0
-0,0,1,1,1,0,0,1,0,0,0,1
-1,1,0,1,1,0,0,1,0,0,0,0
-0,1,0,1,1,0,0,1,0,0,0,0
-1,0,0,1,1,0,0,1,0,0,0,1
-0,0,0,1,1,0,0,1,0,0,0,1
-1,1,1,0,1,0,0,1,0,0,0,0
-0,1,1,0,1,0,0,1,0,0,0,0
-1,0,1,0,1,0,0,1,0,0,0,0
-0,0,1,0,1,0,0,1,0,0,0,1
-1,1,0,0,1,0,0,1,0,0,0,0
-0,1,0,0,1,0,0,1,0,0,0,0
-1,0,0,0,1,0,0,1,0,0,0,1
-0,0,0,0,1,0,0,1,0,0,0,0
-1,1,1,1,0,0,0,1,0,0,0,0
-0,1,1,1,0,0,0,1,0,0,0,0
-1,0,1,1,0,0,0,1,0,0,0,0
-0,0,1,1,0,0,0,1,0,0,0,0
-1,1,0,1,0,0,0,1,0,0,0,0
-0,1,0,1,0,0,0,1,0,0,0,0
-1,0,0,1,0,0,0,1,0,0,0,1
-0,0,0,1,0,0,0,1,0,0,0,1
-1,1,1,0,0,0,0,1,0,0,0,0
-0,1,1,0,0,0,0,1,0,0,0,0
-1,0,1,0,0,0,0,1,0,0,0,0
-0,0,1,0,0,0,0,1,0,0,0,0
-1,1,0,0,0,0,0,1,0,0,0,0
-0,1,0,0,0,0,0,1,0,0,0,0
-1,0,0,0,0,0,0,1,0,0,0,1
-0,0,0,0,0,0,0,1,0,0,0,0
-1,1,1,1,1,1,1,0,0,0,0,0
-0,1,1,1,1,1,1,0,0,0,0,1
-1,0,1,1,1,1,1,0,0,0,0,0
-0,0,1,1,1,1,1,0,0,0,0,1
-1,1,0,1,1,1,1,0,0,0,0,0
-0,1,0,1,1,1,1,0,0,0,0,1
-1,0,0,1,1,1,1,0,0,0,0,0
-0,0,0,1,1,1,1,0,0,0,0,1
-1,1,1,0,1,1,1,0,0,0,0,0
-0,1,1,0,1,1,1,0,0,0,0,1
-1,0,1,0,1,1,1,0,0,0,0,0
-0,0,1,0,1,1,1,0,0,0,0,1
-1,1,0,0,1,1,1,0,0,0,0,0
-0,1,0,0,1,1,1,0,0,0,0,1
-1,0,0,0,1,1,1,0,0,0,0,0
-0,0,0,0,1,1,1,0,0,0,0,0
-1,1,1,1,0,1,1,0,0,0,0,0
-0,1,1,1,0,1,1,0,0,0,0,1
-1,0,1,1,0,1,1,0,0,0,0,0
-0,0,1,1,0,1,1,0,0,0,0,0
-1,1,0,1,0,1,1,0,0,0,0,0
-0,1,0,1,0,1,1,0,0,0,0,1
-1,0,0,1,0,1,1,0,0,0,0,0
-0,0,0,1,0,1,1,0,0,0,0,1
-1,1,1,0,0,1,1,0,0,0,0,0
-0,1,1,0,0,1,1,0,0,0,0,1
-1,0,1,0,0,1,1,0,0,0,0,0
-0,0,1,0,0,1,1,0,0,0,0,0
-1,1,0,0,0,1,1,0,0,0,0,0
-0,1,0,0,0,1,1,0,0,0,0,1
-1,0,0,0,0,1,1,0,0,0,0,0
-0,0,0,0,0,1,1,0,0,0,0,0
-1,1,1,1,1,0,1,0,0,0,0,0
-0,1,1,1,1,0,1,0,0,0,0,1
-1,0,1,1,1,0,1,0,0,0,0,0
-0,0,1,1,1,0,1,0,0,0,0,1
-1,1,0,1,1,0,1,0,0,0,0,0
-0,1,0,1,1,0,1,0,0,0,0,0
-1,0,0,1,1,0,1,0,0,0,0,0
-0,0,0,1,1,0,1,0,0,0,0,1
-1,1,1,0,1,0,1,0,0,0,0,0
-0,1,1,0,1,0,1,0,0,0,0,1
-1,0,1,0,1,0,1,0,0,0,0,0
-0,0,1,0,1,0,1,0,0,0,0,1
-1,1,0,0,1,0,1,0,0,0,0,0
-0,1,0,0,1,0,1,0,0,0,0,0
-1,0,0,0,1,0,1,0,0,0,0,0
-0,0,0,0,1,0,1,0,0,0,0,0
-1,1,1,1,0,0,1,0,0,0,0,0
-0,1,1,1,0,0,1,0,0,0,0,1
-1,0,1,1,0,0,1,0,0,0,0,0
-0,0,1,1,0,0,1,0,0,0,0,0
-1,1,0,1,0,0,1,0,0,0,0,0
-0,1,0,1,0,0,1,0,0,0,0,0
-1,0,0,1,0,0,1,0,0,0,0,0
-0,0,0,1,0,0,1,0,0,0,0,1
-1,1,1,0,0,0,1,0,0,0,0,0
-0,1,1,0,0,0,1,0,0,0,0,1
-1,0,1,0,0,0,1,0,0,0,0,0
-0,0,1,0,0,0,1,0,0,0,0,0
-1,1,0,0,0,0,1,0,0,0,0,0
-0,1,0,0,0,0,1,0,0,0,0,0
-1,0,0,0,0,0,1,0,0,0,0,0
-0,0,0,0,0,0,1,0,0,0,0,0
-1,1,1,1,1,1,0,0,0,0,0,0
-0,1,1,1,1,1,0,0,0,0,0,0
-1,0,1,1,1,1,0,0,0,0,0,0
-0,0,1,1,1,1,0,0,0,0,0,1
-1,1,0,1,1,1,0,0,0,0,0,0
-0,1,0,1,1,1,0,0,0,0,0,1
-1,0,0,1,1,1,0,0,0,0,0,0
-0,0,0,1,1,1,0,0,0,0,0,1
-1,1,1,0,1,1,0,0,0,0,0,0
-0,1,1,0,1,1,0,0,0,0,0,0
-1,0,1,0,1,1,0,0,0,0,0,0
-0,0,1,0,1,1,0,0,0,0,0,1
-1,1,0,0,1,1,0,0,0,0,0,0
-0,1,0,0,1,1,0,0,0,0,0,1
-1,0,0,0,1,1,0,0,0,0,0,0
-0,0,0,0,1,1,0,0,0,0,0,0
-1,1,1,1,0,1,0,0,0,0,0,0
-0,1,1,1,0,1,0,0,0,0,0,0
-1,0,1,1,0,1,0,0,0,0,0,0
-0,0,1,1,0,1,0,0,0,0,0,0
-1,1,0,1,0,1,0,0,0,0,0,0
-0,1,0,1,0,1,0,0,0,0,0,1
-1,0,0,1,0,1,0,0,0,0,0,0
-0,0,0,1,0,1,0,0,0,0,0,1
-1,1,1,0,0,1,0,0,0,0,0,0
-0,1,1,0,0,1,0,0,0,0,0,0
-1,0,1,0,0,1,0,0,0,0,0,0
-0,0,1,0,0,1,0,0,0,0,0,0
-1,1,0,0,0,1,0,0,0,0,0,0
-0,1,0,0,0,1,0,0,0,0,0,1
-1,0,0,0,0,1,0,0,0,0,0,0
-0,0,0,0,0,1,0,0,0,0,0,0
-1,1,1,1,1,0,0,0,0,0,0,0
-0,1,1,1,1,0,0,0,0,0,0,0
-1,0,1,1,1,0,0,0,0,0,0,0
-0,0,1,1,1,0,0,0,0,0,0,1
-1,1,0,1,1,0,0,0,0,0,0,0
-0,1,0,1,1,0,0,0,0,0,0,0
-1,0,0,1,1,0,0,0,0,0,0,0
-0,0,0,1,1,0,0,0,0,0,0,1
-1,1,1,0,1,0,0,0,0,0,0,0
-0,1,1,0,1,0,0,0,0,0,0,0
-1,0,1,0,1,0,0,0,0,0,0,0
-0,0,1,0,1,0,0,0,0,0,0,1
-1,1,0,0,1,0,0,0,0,0,0,0
-0,1,0,0,1,0,0,0,0,0,0,0
-1,0,0,0,1,0,0,0,0,0,0,0
-0,0,0,0,1,0,0,0,0,0,0,0
-1,1,1,1,0,0,0,0,0,0,0,0
-0,1,1,1,0,0,0,0,0,0,0,0
-1,0,1,1,0,0,0,0,0,0,0,0
-0,0,1,1,0,0,0,0,0,0,0,0
-1,1,0,1,0,0,0,0,0,0,0,0
-0,1,0,1,0,0,0,0,0,0,0,0
-1,0,0,1,0,0,0,0,0,0,0,0
-0,0,0,1,0,0,0,0,0,0,0,1
-1,1,1,0,0,0,0,0,0,0,0,0
-0,1,1,0,0,0,0,0,0,0,0,0
-1,0,1,0,0,0,0,0,0,0,0,0
-0,0,1,0,0,0,0,0,0,0,0,0
-1,1,0,0,0,0,0,0,0,0,0,0
-0,1,0,0,0,0,0,0,0,0,0,0
-1,0,0,0,0,0,0,0,0,0,0,0
-0,0,0,0,0,0,0,0,0,0,0,0
