a:6:{i:0;s:14357:"				<div class="h1"><h1>Chadar Trek in Zanskar (Frozen River Trekking) Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.nomadicsteps.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.nomadicsteps.co.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Chadar Trek in Zanskar (Frozen River Trekking) Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						9 Nights / 10 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Leh Ladakh</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.nomadicsteps.co.in/enquiry-form-10003.htm">
						<input type="hidden" name="subject" value="Chadar Trek in Zanskar (Frozen River Trekking) Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="87841"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_16/466826/153243.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/466826/153243.jpg"  width="150" height="150"    alt="Chadar Trek in Zanskar (Frozen River Trekking) Tour" title="Chadar Trek in Zanskar (Frozen River Trekking) Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival in Leh
								</p>
								<p class="aj">rrival at the Leh Airport, one of the highest airports in the world. As you move out of the airport, the sheet of white snow and the stunning views are going to greet you. Meet our tour representation who helps you with in assisted transfer to the hotel/guest house. Rest of a while and in the evening, visit the local market of Leh where you can see that few eating joints and shops are open for the daily business. You can savor hot local food and can indulge in some last minute shopping, if the need be. As you take a walk here, you can feel the chill in the air.<br />
<br />
Overnight stay in the guest house / hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Sightseeing in Leh
								</p>
								<p class="aj">The day is scheduled for sightseeing in Leh, exploring some of Ladakh’s most popular monasteries and local houses in the Indus Valley, driving along Indus River. The first visit is to the very popular Thiksey Monastery, also known as Mini Potala. Belonging to the Gelug sect of Buddhism, placed on a hilltop, this 12-stoery monastery has a beautiful statues, Thangkas, swords and other Buddhist relics. The next visit is to the Hemis Monastery- the largest and the richest monastery of Ladakh. Late afternoon arrival in the beautiful Stok Village for meeting a Ladakhi family and have a sneak-peek into their style of living. Savor Barley drink and their local butter tea. Back to Leh<br />
 Stay overnight at the hotel/guest house.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Leh- Tilad Do via Chilling
								</p>
								<p class="aj">On day 3, in the morning, board a bus to Chilling. This road journey from Leh to Chilling offers a picturesque as well as thrilling ride. The bus travels along the Indus River, to the Nimu Village where you can see the confluence of Zanskar and Indus River. The bus stops here for some time so that tourists can take photographs. The drive later continues on the road that descends towards the right into the river valley. The snow-covered meandering road offers a thrilling ride and carries you to from Chilling to Tilad Do. Do not miss the stunning views of the snow-clad mountains.<br />
 As you de-board the bus at Tilad Do, the trek expedition towards the campsite starts. You take your first step on the Chadar, which in Hindi means ‘sheet’. Cross the frozen Zanskar River carefully. Walking on the ice sheet takes some time as this is the first time. Slowly as the evening arrives, the team has to pitch the tent on the banks of the river. If you want, you can climb up a nearby mountain to have a good view of the wonderful surroundings. As the sun sets, the temperature also dips. Get into your warm sleeping bags to keep the body warm.<br />
<br />
Overnight in the tent.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Tilad Do - Gyalpo
								</p>
								<p class="aj">In the morning, get out of your sleeping bags and enjoy a cup of hot tea to fight the cold spread all around. The day includes a long trek session of around 12 km on the Zanskar Chadar. The guide briefs you about the walking technique on the frozen Zanskar River. The form of the frozen river varies as per the weather. It can either be slippery with hard and cold ice or can also have a dust of snow on it, which makes the walk easier. Follow the guide as the ice can be thick and thin at places and the locals know how this can be handled. The trek also involves walking through ankle deep water or climb on the cliffs, on the side of the river. Slowly you start walking, skating and gliding on the Chadar on your own.<br />
<br />
On the mid-way, you stop at Gyalpo where the porters-cum-cooks serve hot bowls of soupy noodles for lunch. This adds to the body’s need of sold as well as liquid intake. On walking past Shingra Koma, you arrive at the Gyalpo campsite where the potters have already pitched the tents. Positioned on a bend in the river, this site is enveloped by rock walls and high peaks. Enjoy an early dinner and get inside your warm sleeping bag, calling it a day.<br />
<br />
Overnight in camps.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Gyalpo - Tibb Cave
								</p>
								<p class="aj">On the 5th day of the Chadar trek, enjoy your tea at 7 in the morning and breakfast at 8. At 8:30, the trek begins. Have your breakfast properly as the day is scheduled for longest walk of this trekking expedition (14 km). The day takes you through deep ravines of the Zanskar. Most of the day, the chadar receives no sunshine as the area is covered with mountains on both the sides. The mountains also have caves. Walk past frozen waterfalls. On the way, you will also come across little greenery near the only waterfall, which does not freezes and has an interesting ancient fable behind the same. Once you reach Tibb, you can see a huge cave, your dwelling for the day. The porters serve you hot butter tea.<br />
<br />
Overnight camping.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Tibb Cave to Naerak
								</p>
								<p class="aj">The day is scheduled for offering immense natural beauty. Keep walking on the river, crossing deep gorges. You arrive at a place where prayer flags cover the Juniper trees. You can also tie a prayer flag here for good health and good luck. The porters assisting must be having these flags. Just a few steps away is the biggest frozen waterfall of the region and next to it is a bridge, made across the river, which is used in the summer time for come to Leh from Zanskar. Now the trek further is a difficult one. An hour long trek brings you to Naerak Village, which is several feet above the river. This is a Zanskari village where your camp is set, near the river. Relax once you arrive.<br />
<br />
Overnight stay in the camp.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Naerak - Tibb
								</p>
								<p class="aj">Today the return journey starts. Start trekking back to the Tibb Cave. Do not get careless thinking that you have already covered this trek before. Be quite careful as the river can change its form at any time. On your way back, you meet locals who are wearing traditional woolen Gonchas. Some of these people can be monks, who are traveling to Leh from the Lingshed Monastery. Arrival at Tibb.<br />
<br />
Stay overnight.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Tibb – Gyalpo
								</p>
								<p class="aj">Start walking from Tibb and keep walking till Gyalpo. The high-rising mountain walls on the sides of the river, make it look like these are walls of the castle. Spot the pug marks of animals such as ibex, foxes and snow leopards.<br />
<br />
Overnight at Gyalpo.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> Gyalpo - Tilad Do - Drive to Leh
								</p>
								<p class="aj">Day 9 is the last day of walking on the Chadar. Keep walking till you reach Tilad Do. Now is the time to say goodbye to the River Zanskar and the team. Your road journey to Leh starts. On arrival, complete the check-in formalities at guest house/hotel.<br />
<br />
Overnight stay in Leh.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> Departure from Leh
								</p>
								<p class="aj">This memorable trekking expedition comes to an end today. From the Leh airport, go aboard the flight for your onward journey.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.nomadicsteps.co.in/enquiry-form-10003.htm">
						<input type="hidden" name="subject" value="Chadar Trek in Zanskar (Frozen River Trekking) Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="87841"/>
						</form>
						</div>
						
						";i:1;s:91:"Book Chadar Trek in Zanskar (Frozen River Trekking) Tour - 9 Nights / 10 Days Tour Packages";i:2;s:141:"book chadar trek in zanskar (frozen river trekking) tour - 9 nights / 10 days tour packages, trekking tour packages, leh ladakh tour packages";i:3;s:171:"Nomadic Steps offers Chadar Trek in Zanskar (Frozen River Trekking) Tour - 9 Nights / 10 Days tour package, budget Trekking tour packages for Leh Ladakh at exciting price.";i:4;s:433:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Leh Ladakh"        
		                 },
		      "description": "",
		      "name": "Chadar Trek in Zanskar (Frozen River Trekking) Tour",
		      "telephone": "+91-9469261146"
		    }
		    </script>
			";i:5;N;}