This project is related to finding a valid path between start node 'S' and a goal node 'G' in a 2D array using C++11. The algorithm is based on multiple recursions to identify a valid path. If after exploitation of all recursive calls the algorithm doesn't find a path, then the algorithm returns the initial state of the maze. Otherwise it returns a valid path in the maze.