public static void Main()
Console.WriteLine("Hello World");
public static Node FCA(Node node, Node a, Node b){
var isALeft = Covers(node.Left, a);
var isBLeft = Covers(node.Left, b);
var nextNode = isALeft ? node.Left : node.Right;
return FCA(nextNode, a, b);
public static bool Covers(Node node, Node targetNode){
return Covers(node.Left, targetNode) || Covers(node.Right, targetNode);
public Node Left {get;set;}
public Node Right {get;set;}