Here's a working version
//params
string domain = "http://contoso.com";
string siteRelativeUrl = "/sites/aaa";
string listRelativeUrl = "/Accounting";
string documentName = "Demo Document 001.docx";
string localPath = "c:\\temp\\tests\\" + documentName;
int majorVersion = 1;
int minorVersion = 0;
int versionLabel = majorVersion * 512 + minorVersion;
string destinationListTitle = "Administrative";
//setup context
context = Helper.GetContextImpersonated(domain + siteRelativeUrl, UserName, Password, Domain);
Web web = context.Web;
context.Load(web, w => w.ServerRelativeUrl);
context.ExecuteQuery();
//format: /sites/aaa/_vti_history/512/Accounting/Demo Document 001.docx
string fileRelativeUrl = web.ServerRelativeUrl.TrimEnd('/') + "/_vti_history/" + versionLabel + listRelativeUrl + "/" + documentName;
Console.WriteLine("Downloading file: " + fileRelativeUrl);
using (var wc = new System.Net.WebClient())
{
wc.Credentials = new System.Net.NetworkCredential(UserName, Password, Domain);
wc.DownloadFile(domain + fileRelativeUrl, localPath);
}
Console.WriteLine("Uploading file: " + localPath);
FileCreationInformation oCreateFile = new FileCreationInformation();
oCreateFile.Content = System.IO.File.ReadAllBytes(localPath);
oCreateFile.Url = documentName;
oCreateFile.Overwrite = false;
List spList = web.Lists.GetByTitle(destinationListTitle);
Microsoft.SharePoint.Client.File addedFile = spList.RootFolder.Files.Add(oCreateFile);
context.Load(addedFile);
context.ExecuteQuery();
Console.WriteLine("File uploaded!");
I suggest that you check the below link for details on versioning urls,
How to download the historical file version content using CSOM