Simple C# Solution
\npublic class Solution \n{\n    public bool ValidTicTacToe(string[] board) \n    {\n        int xc = 0;\n        int oc = 0;\n        \n        for(int i=0;i<3
```\npublic class Solution \n{\n    public bool ValidTicTacToe(string[] board) \n    {\n        int xc = 0;\n        int oc = 0;\n        \n        for(int i=0;i<3;i++)\n        {\n            for(int j=0;j<3;j++)\n            {\n                if(board[i][j]==\'X\')\n                    xc++;\n                else if(board[i][j]==\'O\')\n                    oc++;\n            }\n        }\n        \n        if(xc-oc > 1 || oc>xc)\n            return false;\n        \n        if(WinningMove(board,\'X\') && WinningMove(board,\'O\'))\n            return false;\n        \n        if(WinningMove(board,\'X\') && xc==oc)\n            return false;\n        \n        if(WinningMove(board,\'O\') && xc>oc)\n            return false;\n        \n        return true;\n    }\n    \n    private bool WinningMove(string[] b, char c)\n    {\n        bool wm1 = b[0][0]==c && b[0][1]==c && b[0][2]==c;\n        bool wm2 = b[0][0]==c && b[1][1]==c && b[2][2]==c;\n        bool wm3 = b[0][0]==c && b[1][0]==c && b[2][0]==c;\n        bool wm4 = b[1][0]==c && b[1][1]==c && b[1][2]==c;\n        bool wm5 = b[2][0]==c && b[2][1]==c && b[2][2]==c;\n        bool wm6 = b[2][0]==c && b[1][1]==c && b[0][2]==c;\n        bool wm7 = b[0][2]==c && b[1][2]==c && b[2][2]==c;\n        bool wm8 = b[0][1]==c && b[1][1]==c && b[2][1]==c;\n        \n        if(wm1 || wm2 || wm3 || wm4 || wm5 || wm6 || wm7 || wm8)\n            return true;\n        \n        return false;\n    }\n}\n```
['C#']