a:6:{i:0;s:10883:"				<div class="h1"><h1>Kashmir - E - Kashmir Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.ajazsaharatour.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.ajazsaharatour.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Kashmir - E - Kashmir Package</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">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Srinagar, Anantnag, Baramulla</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.ajazsaharatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir - E - Kashmir Package - 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="113105"/>
						</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_14/415373/185236.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/415373/185236.jpg"  width="150" height="150"    alt="Kashmir - E - Kashmir Package" title="Kashmir - E - Kashmir Package" /></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 Srinagar
								</p>
								<p class="aj">After arriving at the Srinagar Airport, meet our tour representative who helps you with an assisted transfer to Houseboat. Complete the check-in formalities and relish the welcome drink. After settling-in, begin the city tour of Srinagar. The list of attractions includes gardens of Srinagar- Mughal Gardens, Chashmi-e Shahi (The Royal Spring), Nishat Bagh (The Garden of pleasure) Shalimar Bagh (Abode of love).<br />
<br />
Mughal Gardens – a well-maintained group of garden built in Charbaugh structure in Persian style, a favorite of the Mughal rulers. It features canals, fountains and pools. This garden was commissioned by Emperor Babur and has contributions from his predecessors like Jehangir and Shah Jahan. Visited by tourists in huge numbers, Mughal Garden is one of the most popular attractions in Kashmir. The garden is a combination of three important gardens- namely the Nishat Bagh, Chashm-e-shahi and Shalimar Bagh. Nishat Bagh is a terraced Mughal garden that is the second largest Mughal garden in Kashmir. Lying on the eastern side of the Dal Lake, this garden has 12 terrace levels, with old chinars, rows of flowers and water channels with fountains. Shalimar Bagh was commissioned in 1619 by Mughal Emperor Jahangir for his wife Nur Jahanand is popular as the high point of Mughal horticulture. Chashm-e-shahi is the smallest of the 3 gardens here nut is extremely popular for its Royal Spring. There is a shelter space around the spring that is known to be quite rich in iron and minerals.<br />
<br />
The evening is scheduled for a memorable Shikara Ride in famous Dal Lake.  An activity not to be missed when in Srinagar, Shikara ride takes you to the length and breadth of the lake. Shikara is a small narrow boat that lets you cruise on the serene waters of the lake. There is floating markets selling Kashmiri specialties like dry fruits and woolen and Pashmina shawls. There would be other Shikaras selling various knick-knacks, ice creams, fruits and vegetables. While cursing, get dressed like the locals do and click memorable photographs. There are even bigger Shikaras selling eatables like pakoras, Maggie and more.<br />
<br />
Dinner and Overnight in the House Boat.</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> Srinagar - Gulmarg - Srinagar
								</p>
								<p class="aj">Post breakfast, the day is scheduled for an excursion to Gulmarg, a place that boasts of pristine beauty in abundance. The place looks like heaven nestled amidst high-peaked mountains and covered with a sheet of lush greenery and colorful flowers. A visit to Gulmarg will surely be refreshing and memorable. It has been a holiday resort from the days of the British. The road from Srinagar to Gulmarg is festooned with beautiful white and purple flowers. Enjoy the scenery.<br />
<br />
As you reach Gulmarg, get all set to explore the place and explore its attractions. The hill town boasts of housing Asia’s highest and longest cable car project, the Gulmarg Gondola, the most popular thing to do here. This is two-stage ropeway Cable car that carries around 600 people per hour, to and from Kongdoori Mountain, nearby Afarwat Peak (13,780 ft). Once you reach the top, treat your eyes to the beautiful views of the snow-capped Himalayas. You can also partake in hiking and horse riding to know the place. If you are visiting Gulmarg between December and April, do try Skiing as Gulmarg is one of the world’s best skiing destinations. Try your hand at golfing at the highest golf course in the world with 18 holes.<br />
<br />
Return to Srinagar by evening. Overnight stay.</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> Srinagar - Pahalgam - Srinagar
								</p>
								<p class="aj">After enjoying breakfast, leave the hotel for a full day excursion of Pahalgam or the Valley of Shepherds. On the way, take at halt to visit the Saffron fields. Pampore is the place in Kashmir that has been growing Saffron from past 2500 years. Kashmiri Saffron is known to be of the best quality. You can click pictures here as memories. Admire the nature’s mesmerizing views.  <br />
<br />
Later, continue towards Pahalgam, a beautiful hill town of Kashmir, covered with lush greenery. Located on the banks of Lidder River, Pahalgam is a favorite spot for the shooting of Bollywood movies and allures a crazy number of tourists. On arrival, explore the popular tourist attractions of Pahalgam. If you are an adventure enthusiast, try your hand in River Lidder. Hop onto a horse’s back to explore the place. You can shop for some amazing stuff from the market of Pahalgam.<br />
<br />
Visit Avantipura Ruins, remains of ancient Hindu temples that were commissioned by King Awanti Varman who ruled the region during the 9th century. The ruins have temples, dedicated to Lord Shiva and Lord Vishnu. The place is surrounded by greenery and offers mental peace. The next attraction is Anantnag Sulphur Springs, 2 in number. The water of these springs is very fresh. Spend some memorable with your loved ones here.<br />
<br />
In the evening, back to Srinagar. 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 4:</b> Departure from Srinagar
								</p>
								<p class="aj">Departure from Srinagar</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>
															</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.ajazsaharatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Kashmir - E - Kashmir Package - 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="113105"/>
						</form>
						</div>
						
						";i:1;s:68:"Book Kashmir - E - Kashmir Package - 3 Nights / 4 Days Tour Packages";i:2;s:141:"book kashmir - e - kashmir package - 3 nights / 4 days tour packages, hill station tour packages, srinagar, anantnag, baramulla tour packages";i:3;s:188:"Ajaz’s Sahara Tour & Travels offers Kashmir - E - Kashmir Package - 3 Nights / 4 Days tour package, budget Hill Station tour packages for Srinagar, Anantnag, Baramulla at exciting price.";i:4;s:430:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Srinagar, Anantnag, Baramulla"        
		                 },
		      "description": "",
		      "name": "Kashmir - E - Kashmir Package",
		      "telephone": "+91-9419058127"
		    }
		    </script>
			";i:5;N;}