a:6:{i:0;s:14063:"				<div class="h1"><h1>Chadar Trek 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 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 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="109996"/>
						</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/181542.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/466826/181542.jpg"  width="150" height="150"    alt="Chadar Trek Tour" title="Chadar Trek 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
								</p>
								<p class="aj">Arrival 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 />
<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 />
<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">Return home with sweet memories .</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 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="109996"/>
						</form>
						</div>
						
						";i:1;s:56:"Book Chadar Trek Tour - 9 Nights / 10 Days Tour Packages";i:2;s:106:"book chadar trek tour - 9 nights / 10 days tour packages, trekking tour packages, leh ladakh tour packages";i:3;s:152:"Book Chadar Trek Tour - 9 Nights / 10 Days tour packages from Nomadic Steps - Get attractive 9 Nights / 10 Days Trekking  tour packages for  Leh Ladakh.";i:4;s:398:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Leh Ladakh"        
		                 },
		      "description": "",
		      "name": "Chadar Trek Tour",
		      "telephone": "+91-9469261146"
		    }
		    </script>
			";i:5;N;}