Getting Race Position in Multiplayer Game in Unity3D using UNET

I am building a Runnig Race Multiplayer Game in Unity3D using UNET. I have 2 Player running in a game. I want to update position of the player while running who is first and who is second and vice versa, Please help me what i am doing wrong.

Here is my code:

public class Player : NetworkBehaviour
{
    [SyncVar(hook = "OnPositionChanged")] public Vector3 playerPos;
	static List<Player> players = new List<Player>();
    
	[ServerCallback]
    void OnEnable()
    {
        if (!players.Contains(this))
            players.Add(this);
    }

    [ServerCallback]
    void OnDisable()
    {
        if (players.Contains(this))
            players.Remove(this);
    }
	
    private void Update()
    {
        if (!isLocalPlayer)
            return;
			
			PlayerPositionCalls();
        }
        
    }

    void OnPositionChanged(Vector3 value)
    {
        playerPos = value;
    }

    [Client]
    void PlayerPositionCalls()
    {
        CmdServerPosition();
    }

    [Command]
    public void CmdServerPosition()
    {
        Position();
    }

    [Server]
    public void Position()
    {
        playerPos = transform.position;

        for (int i = 0; i < players.Count; i++)
            players*.RpcPosition(netId, playerPos);*

}

[ClientRpc]
void RpcPosition(NetworkInstanceId networkID, Vector3 pos)
{

  •  playerPos = pos;*
    

if (isLocalPlayer)
{
if (netId == networkID && transform.position.z > pos.z)
PlayerCanvas.canvas.WritePositionText(“1”);
else
PlayerCanvas.canvas.WritePositionText(“2”);
}
}
}

So here is the Answer fixed by my self. What I did is I added 2 Slider for Player Position Indicator to show who is first and who is second, and I set the minimum value of Slider to Start Position of Player and Max Value to Finish Position of the Player and then I compared the value of slider.

here is the code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class PlayerPosition : NetworkBehaviour {

    GameObject[] Players;
    Vector3 playerPos;

    // Update is called once per frame
    void Update() {

        if (!isLocalPlayer)
            return;
            ClientPositionCalls();

            if (PlayerCanvas.canvas.hostDotObj.GetComponent<Slider>().value > PlayerCanvas.canvas.clientDotObj.GetComponent<Slider>().value)
            {
                PlayerCanvas.canvas.WritePositionText("1");
            } else
            {
                PlayerCanvas.canvas.WritePositionText("2");
            }
    }

    [Client]
    void ClientPositionCalls()
    {
        CmdServerPosition();
    }

    [Command]
    public void CmdServerPosition()
    {
        playerPos = transform.position;
        RpcPosition(playerPos);
    }

    [ClientRpc]
    void RpcPosition(Vector3 pos)
    {
        if (isLocalPlayer)
        {
            PlayerCanvas.canvas.hostDotObj.GetComponent<Slider>().value = transform.position.z;
            playerPos = pos;
        } else
        {
            PlayerCanvas.canvas.clientDotObj.GetComponent<Slider>().value = pos.z;
        }
    }
}