Code in C++Game Plan:Free Cell is a single player, one deck card game. In this game, there are:8 columns of cards4 Free cells on the top left corner4 Home slots on the top right cornerWhen the game starts:- the first 4 columns have 7 cards each.- the next 4 columns have 6 cards each.- free cells and home slots are empty. Each free cell can have one card at a time. Each- home slot has to stack up all 13 cards of a single suit starting from Ace to King.How to play:• Column to Column Move:o You can move a card from one column to another column if the card of sourcecolumn and card of destination column are of alternating color and source column card is immediate descendent in rank of destination tableau card [except for the Ace card, Ace card should be moved to Home slot]. You can also move multiple cards in one move if the source cards follow the above mentioned rule i.e. after moving multiple cards from source column pile, resulting column will form a descending sequence of cards with alternating colors• Column to Free Cell Move:o You can move any top most/exposed card from any column to any available FreeCell slot except for Ace card. Ace card should be moved to Home slot.• Free Cell to Column Move:o A card from free cell slot can be moved to column card if it follows the conditionmentioned in column to column move i.e. card of source Free Cell and card of destination column pile are of alternating color and source Free Cell card is immediate descendent in rank of destination column card.• Column to Home Slot Move:o The first card that will be moved to Home slot will be Ace card. After Ace card, cards will be piled up in Home slot in successive ascending order till King. Each home slot will contain pile of cards of a particular suit only. When all cards will be moved to home slots, player wins the game.• Free Cell to Home Slot Move:o A card from Free Cell can be moved to home slot if the suit of free cell card issame as that of cards (if present) in home slot and free cell card should be in successive ascending order. If any Home slot is empty, the first card that will be moved to Home slot should be Ace card.Winning Condtion:The game ends when a player piles up all the cards to home slots i.e. 13 cards of each suit to each home slot.Your Task:Use the starter code provided to you and write your code in that file.Implement the above functionality described in Section "How to Play." Ensure that witheach new game, the cards should be placed randomly in the columns.Your game should be able to display the updated state of the game after every move.Your game should be able to tell when a player has won the game.You have to change the size of your columns dynamically.Implement the functionality to save the state of an ongoing game in a file in order to playit later. A player should be able to play a previously saved game.Implement error handling while taking inputs from the player.